MySQL的概述.docx
- 文档编号:8967088
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:25
- 大小:38.49KB
MySQL的概述.docx
《MySQL的概述.docx》由会员分享,可在线阅读,更多相关《MySQL的概述.docx(25页珍藏版)》请在冰点文库上搜索。
MySQL的概述
作业:
了解常见的商业数据库产品,通过图书资料,维基百科,产品白皮书等资料,查找并了解下列商业数据库的相关特点,市场地位并根据查询的资料比较这些数据库产品的优缺点,并把你的理解写下来。
(MySQL、SQLServer、ORACLE、IBMDB2、SYBASE)。
1、MySQL数据库
MySQL的概述:
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。
在2008年1月16号被Sun公司收购。
而2009年,SUN又被Oracal收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL的特性:
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
2.支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统。
3.为多种编程语言提供了API。
这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源。
5.优化的SQL查询算法,有效地提高查询速度。
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
8.提供用于管理、检查、优化数据库操作的管理工具。
9.可以处理拥有上千万条记录的大型数据库。
MySQL的应用:
与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。
对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。
由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
MySQL的管理:
可以使用命令行工具管理MySQL数据库,也可以从MySQL的网站下载图形管理工具MySQLAdministrator和MySQLQueryBrowser。
phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web界面管理MySQL资料库。
phpMyBackupPro也是由PHP写成的,可以透过Web介面创建和管理数据库。
它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL数据库。
Mysql存储引擎:
MyISAMMysql的默认数据库,最为常用。
拥有较高的插入,查询速度,但不支持事务。
InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定。
BDB源自BerkeleyDB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性。
Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。
但是会占用和数据量成正比的内存空间。
并且其内容会在Mysql重新启动时丢失。
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。
Archive非常适合存储大量的独立的,作为历史记录的数据。
因为它们不经常被读取。
Archive拥有高效的插入速度,但其对查询的支持相对较差。
Federated将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。
非常适合分布式应用。
Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。
适合数据量大,安全和性能要求高的应用。
另外,Mysql的存储引擎接口定义良好。
有兴趣的开发者通过阅读文档编写自己的存储引擎。
MySQL的索引文件介绍:
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。
每修改数据记录,索引就必须刷新一次。
为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。
这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。
在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。
另外,索引还会在硬盘上占用相当大的空间。
因此应该只为最经常查询和最经常排序的数据列建立索引。
注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
1、InnoDB数据表的索引
与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要在得多。
在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。
“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。
这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。
显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。
2、限制
如果WEHERE子句的查询条件里有不等号(WHEREcoloum!
=),MySQL将无法使用索引。
类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。
在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。
如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。
比如说,如果查询条件是LIKE'abc%‘,MySQL将使用索引;如果查询条件是LIKE'%abc’,MySQL将不使用索引。
在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。
(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。
如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。
比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
MySQL文件优化:
查询和索引的优化:
只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。
如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快--不管有没有使用索引。
只有当数据库里的记录超过了1000条、数据总量也超过了MySQL服务器上的内存总量时,数据库的性能测试结果才有意义。
在不确定应该在哪些数据列上创建索引的时候,人们从EXPLAINSELECT命令那里往往可以获得一些帮助。
这其实只是简单地给一条普通的SELECT命令加一个EXPLAIN关键字作为前缀而已。
有了这个关键字,MySQL将不是去执行那条SELECT命令,而是去对它进行分析。
MySQL将以表格的形式把查询的执行过程和用到的索引等信息列出来。
在EXPLAIN命令的输出结果里,第1列是从数据库读取的数据表的名字,它们按被读取的先后顺序排列。
type列指定了本数据表与其它数据表之间的关联关系(JOIN)。
在各种类型的关联关系当中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:
对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍——这种情况往往可以用一索引来避免)。
possible_keys数据列给出了MySQL在搜索数据记录时可选用的各个索引。
key数据列是MySQL实际选用的索引,这个索引按字节计算的长度在key_len数据列里给出。
比如说,对于一个INTEGER数据列的索引,这个字节长度将是4。
如果用到了复合索引,在key_len数据列里还可以看到MySQL具体使用了它的哪些部分。
作为一般规律,key_len数据列里的值越小越好。
ref数据列给出了关联关系中另一个数据表里的数据列的名字。
row数据列是MySQL在执行这个查询时预计会从这个数据表里读出的数据行的个数。
row数据列里的所有数字的乘积可以大致了解这个查询需要处理多少组合。
最后,extra数据列提供了与JOIN操作有关的更多信息,比如说,如果MySQL在执行这个查询时必须创建一个临时数据表,就会在extra列看到usingtemporary字样。
MySQL的优缺点:
1、优点
MySql是一个快速、多线程、多用户的SQL数据库服务器。
几乎是免费的,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等。
MySql的核心程序采用完全的多线程编程。
线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。
用多线程和C语言实现的MySql能很容易充分利用CPU。
MySql可运行在不同的操作系统下。
简单地说,MySql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUNOS等多种操作系统平台。
这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。
MySql有一个非常灵活而且安全的权限和口令系统。
当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。
MySql支持ODBCforWindows。
MySql支持所有的ODBC2.5函数和其他许多函数,这样就可以用Access连接MySql服务器,从而使得MySql的应用被大大扩展。
MySql支持大型的数据库。
虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySql可以方便地支持上千万条记录的数据库。
作为一个开放源代码的数据库,MySql可以针对不同的应用进行相应的修改。
MySql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。
事实上,MySql的稳定性足以应付一个超大规模的数据库。
强大的查询功能。
MySql支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。
PHP为MySql提供了强力支持,PHP中提供了一整套的MySql函数,对MySql进行了全方位的支持。
2、缺点
MySQL不完全支持陌生的关键词;MySQL也缺乏一些存储程序的功能;使用缺省的ip端口,但是有时候这些ip也会被一些黑客闯入;
使用myisam配置,如果你不慎损坏数据库,结果可能会导致所有的数据丢失;没有事务,没有子查询,也没有视图。
了解及体会:
从查阅的资料可以获悉MySQL是一个可运行在Windows平台和大多数的Linux平台上的半商业数据库。
并且知道MySQL客户库是客户/服务器结构的C语言库。
市场的结果已经证明MySQL具有性价比高、灵活、广为使用和具有良好支持的特点。
主要是针对嵌入式开发,以小为优势,缺点是含量很小不适合大型项目。
2、MicrosoftSQLServer
SQLServe的概述
MicrosoftSQLServer是由美国微软公司所推出的关系数据库解决方案,最新的版本是SQLServer2008,已经在2008年8月6日上市。
MicrosoftSQLServer数据库的内置语言是由美国标准局(ANSI)和国际标准组织(ISO)所定义的SQL语言,微软公司对它进行了部分扩充而成为作业用SQL(Transact-SQL)。
MicrosoftSQLServer几个初始版本适用于中小企业的数据库管理,但是近年来它的应用范围有所扩展,已经触及到大型、跨国企业的数据库管理。
SQLServer版本:
SQLServer依功能的不同,分成下列的版本:
SQLServerEnterpriseEdition:
具有企业级功能的SQLServer版本,适用于大型企业以及大型数据库或数据仓库的服务器版本。
SQLServerStandardEdition:
具有标准功能的SQLServer版本,适用于一般企业的服务器版本。
SQLServerWorkgroupEdition:
自SQLServer2000开始才有的版本,专为工作组群或部门所设计,适用于较小规模的组织。
SQLServerWebEdition:
自SQLServer2008开始才有的版本,专为Web服务器与WebHosting所设计,功能上较WorkgroupEdition少一些。
SQLServerExpressEdition:
免费的SQLServer版本,适用于小型应用程序或是单机型应用程序,但在功能上有设限,如只能使用一颗处理器,以及最大数据库大小为4GB等。
SQLServer的特点:
SQLServer2005具代表性的新功能有:
●SQLServer管理工具的改变,SQLServerManagementStudio(SSMS)取代SQLServerEnterpriseManager。
●将商业智能的开发功能由SQLServerEnterpriseManager切出,加入VisualStudio中,即BusinessIntelligenceDevelopmentStudio(BIDS)。
●新增多种Transact-SQL指令,例如PIVOT/UNPIVOT,CommonTableExpression(CTE)等等。
●强化XML的处理能力,并新增本地的XML数据型别,以及支持本地XML数据型别的XML查询操作符。
●新增varchar(max),nvarchar(max),varbinary(max)型数据型别,用来取代text、ntext与image型别。
●将.NETFramework功能植入数据库引擎中(SQLCLR),让VB.NET和C#可以开发SQLServerStoredProcedure,Function,User-DefinedType等。
●原本的DTS改名为SQLServerIntegrationServices,强化其ETL(Extract,TransformandLoad)功能。
●DataMining新增到八种算法。
●数据库引擎的安全性功能大幅强化,引入主体(Principal),结构(Schema)以及数据层次的加解密。
●对于数据结构变更的触发程序支持(DDLTrigger)。
SQLServer2008
●SQLServer2008在2008年8月6日正式发表,并且同时发布SQLServer2008Express版本,研发代号为“Katmai”,作为SQLServer2005的功能强化版本,其主要的新功能[3]与特色有:
●以原则为主(Policy-Based)的管理基础架构。
●与WindowsServer2008、WindowsVista的DataCollector技术集成的PerformanceDataCollection。
●可以经由管理者设置以调整执行资源的资源调节器(ResourceGoverner)。
●可预测的查询效能。
●数据压缩能力。
●DDL(数据定义语言)审核能力。
●透通式数据加密(TransparentDataEncryption)
●记录档数据流压缩(LogStreamCompression)
●ADO.NETObjectServices的直接支持,这代表SQLServer2008可支持LINQ和ADO.NETEntityFramework。
●本地的DATE和TIME分割的数据型别,并且支持时间位移的DATETIMEOFFSET和更精确的DATETIME2数据型别。
●FILESTREAM数据型别:
将大型二进制数据存到NTFS文件系统中(即不直接存在数据库中)。
●稀疏字段(SparseColumn)的支持,可节省因为NULL值所占据的储存空间。
●空间数据型别集,包含geometry(平面或Euclidean(平面地球)数据)以及geography(椭圆体(圆形地球)数据),分别可储存平面和立面型的数据,有助于GIS型系统的开发。
●变更数据收集与捕捉(ChangeDataCapture)。
●宽数据表(Widetable),可以容纳最高30,000个字段,但必须要配合Sparse字段使用。
●hierarchyid数据类型,可以允许储存层次结构化的数据。
●MERGE陈述式,可根据与来源数据表联结的结果,在目标数据表上执行插入、更新或删除作业,其功能与ADO.NET中的DataSet.Merge()方法类似。
●ReportServer应用程序嵌入能力。
●ReportingService可支持窗体验证。
●预测分析能力(SSAS)。
●数据表型参数与变量,可以在变量或参数中使用table的型别。
●SQLServer2008比起以往版本存在以下优势:
(1)保护数据库查询
(2)在服务器的管理操作上花费更少的时间(3)增加应用程序稳定性(4)系统执行效能最佳化与预测功能
SQLServer的管理:
MicrosoftSQLServer提供了一个用于管理一个或多个SQLServer实例的基于政策的系统和用于性能监控、故障排除和调整的工具,使得管理员能够更有效的管理他们的数据库和SQLServer实例……
1.提高管理员生产力
MicrosoftSQLServer提供了一个用于管理一个或多个SQLServer实例的基于政策的系统和用于性能监控、故障排除和调整的工具,使得管理员能够更有效的管理他们的数据库和SQLServer实例。
2.容易扩展
新的政策框架在多个服务器间进行管理,使得在企业中能够更容易的实施一致的配置政策。
3.实行多个服务器间的自动化政策
在SQLServer2008中,DMF提供了发布政策种类到你的环境中其余的SQLServer上去的能力。
你可以在一个SQLServer实例(作为配置服务器)上定义政策,然后将这些政策复制到其他的服务器上(作为配置目标)。
对配置服务器上的政策或种类的任何改动(例如创建一个不活动的特殊种类)都会自动的传递到所有的配置目标上,这会显著的降低在企业中实施配置政策遵从性检查的相关费用。
除了政策的传送,你还可以使用QueryEditor对配置目标集合进行查询。
4.符合期望目标
管理员可以获得采取了改进的政策框架的系统配置的逻辑视图,使他们可以预先的定义想要的数据服务配置。
5.管理工作的生产力和可靠性
基于政策的管理框架提供了定义用于服务器、数据库和你的数据环境中的其他对象的政策的能力。
当你定义一个政策时,你选择一个用于政策的执行模式,它将决定这个政策是按预先的计划执行了,还是通过管理人员手动执行的。
下面是政策属性中的四个执行模式选项:
按需。
管理员手动调用政策检查。
按计划,记录不符合政策的信息。
一个SQLServerAgent作业定时执行这个政策,并记录任何与采用的政策不符的配置设置。
进行改动,阻止不符合政策的操作。
DDL触发器回滚与所采取的政策不符的事务。
进行改动,记录与政策不符的配置。
当发生了相关的变动时事件通知会评估这个政策,并记录任何与采取的政策不符的配置设置。
6.维护计划
维护计划使管理员可以快速的配置标准的维护政策,例如常规数据库和事务日志备份,并在SQLServer实例上执行索引维护。
维护计划向导提供了一个快速的和用户友好的方式来为一个或多个数据库定义维护计划。
与任务相似,在主服务器/目标服务器配置中多个服务器维护计划可以从一个中央服务器那里进行管理。
除了维护计划向导之外,SQLServer管理套件(SQLServerManagementStudio)还提供了一个广泛的设计界面,有了它你可以为维护计划任务定义一个更强大的工作流。
7.监控和优化为最佳性能
监控和优化你的数据服务的性能。
SQLServer性能套件(SQLServerPerformanceStudio)SQLServer2008提供了性能套件(PerformanceStudio),它是一个集成的框架,你可以使用它来集合、分析、排除故障和存储SQLServer诊断信息。
它的三个组件包括:
o减少数据采集工作量
o集中存储
o性能数据的分析报告
8.数据采集
o性能套件提供了一个统一的数据采集设施,它在每一个你想监控的SQLServer实例中有一个数据采集器。
o你可以使用这个数据收集框架轻松的收集性能和常规的诊断数据。
o性能或诊断信息的来源包括SQL跟踪、性能计数器和Transact-SQL查询(例如从分布式管理视图获取数据)。
9.性能数据集中存储
配置数据采集器时,会创建一个默认名称为MDW的关系数据库作为一个管理数据仓库,用于将采集的数据存储在其中。
这个数据库可以放在数据采集器所在的系统上,或放在单独的服务器上。
采用SystemCenterOperationsManager点对点对服务进行监控,使用SQLServer管理包,使得你的企业中的可扩展的系统管理更为广泛。
10.实时的性能诊断
使用SQLServerProfiler来实时诊断捕捉服务器事件。
将跟踪与性能计数器联系起来,以便分析事件和诊断问题。
SQLServer的优缺点:
优点:
1.真正的客户机/服务器体系结构。
2.图形化的用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.与WinNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等,SQLServer也可以很好地与MicrosoftBackOffice产品集成。
5.有很好的伸缩性,可以跨平台使用。
6.提供数据仓库功能,这个功能只在Oracle和其他昂贵的DBMS中才有。
缺点:
1.只能在windows上运行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 概述