当前位置:首页 > 日记 > 正文

深入分析mysql数据库引擎的介绍、区分、创建和性能测试

深入分析mysql数据库引擎的介绍、区分、创建和性能测试
数据库引擎的介绍

MySQL数据库引擎取决于MySQL编译安装后,添加一个新的引擎,你必须重新编译MySQL。在默认情况下,MySQL支持三引擎:ISAM,MyISAM,堆。其他两型,InnoDB和BERKLEY(BDB),经常使用。如果技术超,你也可以使用MySQL + API使发动机。这里有几个数据库引擎:ISAM ISAM是一个定义明确的时间:测试数据表管理方法。设计时,认为数据库被查询的次数比更新的数量大得多。因此,ISAM执行读操作快速,不占用大量的内存和存储资源,该两个主要缺点是它不支持事务处理、容错性:如果你的硬盘崩溃,数据文件将不可恢复。如果你使用的是ISAM在关键任务的应用程序,你必须经常备份你所有的实时数据,并可以通过MySQL复制功能支持这样的备份应用程序。
MyISAM:MyISAM是MySQL的ISAM扩展格式,默认的数据库引擎,除了提供一个功能指标和现场管理不多,MyISAM也用一种锁定机制,来优化多个并发的读写操作,成本往往是你需要运行的优化表命令恢复更新机制浪费了space.myisam也有一些有用的扩展,如用于修复用来恢复废space.myisam强调快速的读操作数据库文件和MyISAMPack工具myisamchk工具,这可能是主要原因为什么MySQL一直如此受欢迎,网站开发:网站开发,大量的数据操作,你是读操作因此,大多数的V。虚拟主机提供商和网络平台服务提供者只允许使用MyISAM格式。在MyISAM格式的一个重要缺陷是,数据不能在表损坏恢复。
堆:堆允许临时表,只驻留内存,在内存使堆比ISAM和MyISAM更快,但它所管理的数据是不稳定的,如果它不保存关机前,所有的数据都将丢失。当数据线删除,堆不浪费大量的空间。堆表是非常有用的当你需要使用SELECT表达式来选择和操作数据。记住,的形式使用后删除表。
InnoDB:InnoDB数据库引擎的技术使MySQL灵活的直接产品,在技术和MySQL + api.when你使用MySQL,几乎每一个挑战,你面对的是来自ISAM和MyISAM数据库引擎。它不支持事务处理(事务处理),也不支持外键。虽然它比ISAM和MyISAM引擎慢很多,InnoDB包括支持事务处理和外键,其中前两个引擎没有。正如前面提到的,如果你的设计需要这些特征之一或者,你是被迫使用一个引擎。
如果你觉得你真的很熟练,你也可以使用MySQL + API来创建自己的数据库引擎。这个API为您提供了经营领域、功能记录,表格,数据库连接,安全帐户,和建筑的所有其他功能,如MySQL数据库的需要。它超出了这篇文章范围彻底解释的API,但它是非常重要的你了解MySQL + API和它背后的技术的存在。据估计,这个插件数据库引擎的模型可以被用来创建一个本地XML(XML提供商)提供MySQL。(任何MySQL + API开发阅读本本文认为这是一个要求。)
MyISAM和InnoDB的区别
InnoDB和MyISAM是最常用的两种表类型使用MySQL的时候,这两个表类型都有自己的优点和缺点,这取决于具体的应用,基本的区别是,MyISAM类型不支持事务处理等高级处理,而InnoDB类型的表supports.myisam型强调性能,及其执行倍比InnoDB类型更快,但是不提供事务支持。InnoDB提供事务支持,如外部键,和其他先进的数据库功能。
下面是一些细节和具体的区别:
1.innodb不支持全文索引的类型。
2.innodb不保存表的具体行数,也就是说,当执行select count(*)fromtable,InnoDB会扫描整个表来计算行数,但MyISAM只是读取保存的行数。请注意,当计数(*)语句包含WHERE条件,两个表的操作是一样的。
3、对auto_increment类型字段,InnoDB必须包含这个领域的唯一指标,但在MyISAM,它可以建立与其他领域的联合指数。
当4.delete从表,InnoDB不重建一个表,但一行行。
5.load表重新操作不适合InnoDB。解决的办法是改变InnoDB表MyISAM表,然后将数据导入InnoDB表,但它并不适用于额外的InnoDB特征(如外键)。

此外,在InnoDB表的行锁也不是绝对的。如果执行SQL语句,MySQL无法确定要扫描的范围。InnoDB表也将锁定整个表,如updatetable集数= 1名一%。
主要的区别是,InnoDB支持事务处理和外键和行级锁。MyISAM不支持。所以MyISAM往往容易被认为是适用于小型项目。
作为使用MySQL的用户角度,InnoDB和MyISAM都喜欢它。但从我目前的操作和维护的数据库平台,以满足需求:99.9%的稳定性,方便的可扩展性和高可用性,MyISAM绝对是我的第一选择。

原因如下:
1,首先,我提出的大部分项目的平台上读写的少,和MyISAM的阅读成绩比InnoDB强多了。
2、对MyISAM的索引和数据是分开的,和索引压缩,和内存使用增加很多。更多的指标可以被加载,和InnoDB是紧密联系在一起的指标和数据,和无压缩,它可以导致InnoDB要大于MyISAM。
3,从平台的角度来看,通常1,将2个月应用开发者不小心更新范围表哪里写错了,因为这表不能正常使用,这个时候MyISAM的优势表现,只是从包的复制出相应的表格文件,把它放在一个数据库目录,然后转储到SQL然后回到主图书馆,和相应的binlog补丁。如果是InnoDB,恐怕没那么快。不要告诉我,InnoDB定期出口xxx.sql机制,因为在我的平台数据的最小量基本上是G.
应用逻辑4,从我的联系人,选择数量和顺序(*)是最常见的,大概占到总数的60%的SQL语句,这个操作实际上是InnoDB会锁定表,很多人认为我们是唯一的行级锁,在其关键是有效的,将锁定非主键的表。
5、经常有许多应用部门需要我给他们一些常规表的数据,MyISAM是非常方便的,只要把相应的表frm.myd,MYI文件,让他们开始对线在对应的数据库版本,和InnoDB需要出口xxx.sql,因为别人文件的字典数据文件的影响,其他不可用。
6、如果插入和MyISAM比写操作,InnoDB还达不到写MyISAM的表现,如果它是基于InnoDB更新操作的指标,而MyISAM可能不会,但再高的并发写入,也从图书馆的问题可以理解,以及通过多实例库表结构来解决。
7、如果是使用MyISAM引擎,将可以大大加快应用部门的发展。只要他们做selectcount(*)在合并表操作,非常适合于对大型项目的行数以百万计的总数,如日志、调查与统计。
当然,我们不是绝对不使用事务的项目如股票市场仿真程序,我使用InnoDB,约200000活跃用户,也很容易处理,所以我也很爱我们,但如果从数据库应用平台,我是第一个表。
此外,有些人可能会说,你不能写太多的反MyISAM的,但我可以使它通过结构,我现在说一个有用的数据库平台的能力:在掌握超过几百个T的数据量,大约十亿的PV每天动态页面,还有几个大的项目是数据接口在PV的调用总数不。(包括一个大项目,领导每天一个数据库查询处理9000万年初以来memcached部署)。我整个数据库服务器平均负载约0.5-1。

一般来说,MyISAM是合适的:
(1)做大量的计数计算;
(2)插入不频繁,查询非常频繁。
(3)没有生意。

InnoDB适合:
(1)高可靠性要求或业务要求;
(2)表更新和查询非常频繁,而数据引擎是由表锁较大的机会创建的。
让所有的灵活性可能的开关是MySQL的扩展,提供ANSI SQL的类型parameter.mysql允许你桌上指定数据库引擎,所以他们有时指表格式。下面的示例代码演示了如何创建一个表,用MyISAM、法和堆发动机,分别注为创建每个表的代码是一样的,这个参数是用来除最后一种类型参数指定数据引擎。

下面提到:
复制代码代码如下所示:
创建表(tblmyisam
我没有空auto_increment int,
主键(id),
value_a tinyint
类型= MyISAM)
创建表(tblisam
我没有空auto_increment int,
主键(id),
value_a tinyint
类型= ISAM)
创建表(tblheap
我没有空auto_increment int,
主键(id),
value_a tinyint
类型=堆)

你也可以使用ALTER TABLE命令将原来的形式从一个主机到另一个。下面的代码显示了如何使用ALTER TABLE将MyISAM表InnoDB引擎:

下面提到:
复制代码代码如下所示:
修改表tblmyisam变化类型= InnoDB

MySQL使用三步来实现这个目标。首先,创建一个表的副本。然后,在任何输入数据中的更改被排队,副本被移动到另一个引擎。最后,队列中的任何数据更改被发送到一个新的表单,并且原始表单被删除。
复制代码代码如下所示:
修改表的快捷方式

如果你只是想从ISAM MyISAM更新表,你可以使用mysql_convert_table_format命令而不是写在表的表达。

您可以使用显示表命令(这是另一个扩展的MySQL的ANSI标准)来确定发动机管理的具体table.show表返回结果集的多个数据列。您可以使用此结果集查询各种信息:数据库引擎的名称在类型字段中:
复制代码代码如下所示:
从tblinnodb表状态

你可以使用显示创建表{是}来检索显示表可以检索信息。
一般来说,MySQL默认情况下会提供多种存储引擎,可以通过以下方式查看:
(1)看看你的MySQL现在提供了什么存储引擎:MySQL显示引擎;
(2)看你的MySQL的默认存储引擎:MySQL >显示变量''%1 storage_engine %;
(3)您需要查看表中使用的引擎(在显示结果中,参数引擎指示表中所使用的当前存储引擎)。
最后,如果你想使用一个引擎没有被编译到MySQL和没有被激活,它是无用的,和MySQL不会提示这个。它只会给你提供一个默认的形式格式(MyISAM)。除了使用默认的格式,有使MySQL给出错误提示方法。但目前,如果不能确定是否有特定的数据库引擎,则需要使用show表检查表格格式。
更多的选择意味着更好的性能。
对特定表的引擎需要重新编译和跟踪。考虑到额外的复杂性,为什么还要使用非默认数据库引擎答案很简单:您需要调整数据库以满足您的需求。
可以肯定的是,MyISAM是真的很快,但是如果你的逻辑设计需要事务处理,你可以使用支持事务处理自由引擎。进一步说,因为MySQL允许您将数据库引擎在桌子上,你只能优化需要事务处理的表,并交不需要事务处理一个更便携的MyISAM引擎的表,MySQL,灵活性是关键。

性能测试
所有的性能测试都在窗口XP SP2 Micrisoft计算机测试,英特尔(R)pentinum(R)M处理器1.6oghz 1G内存。
测试方法:连续提交10个查询,表记录总数:38万,时间单位S
发动机类型myisaminnodb性能差异
计数0.00083573.01633609
0.005708 0.157427.57查询主键
查询非主键24.01 80.37 3.348
更新主键0.008124 0.8183100.7
更新非主键0.004141 0.02625 6.338
插入0.004188 0.369488.21
(1)当索引查询可以加快说,MyISAM:4206.09733次,比InnoDB查询快510.72921倍。同时,MyISAM的更新速度已经下降到原来的1 / 2放缓,和InnoDB的更新速度已经下降到原来的1 / 30.it放缓取决于形势决定是否被索引,如日志表,不质疑,不做任何指数。
(2)如果你的数据量是百万,而且没有事务处理,然后MyISAM是表现最好的选择。
(3)对InnoDB表的尺寸较大,和大量的硬盘空间可以保存MyISAM。

表占用的表在38w表我们测试如下:

发动机型号MyISAM InnoDB
数据53924 KB 58976 KB
索引13640 KB 21072 KB

占总空间67564 KB 80048 KB

另一个176w万记录表,占用的空间表如下:
发动机型号MyIsam InnorDB
数据56166 KB 90736 KB
索引67103 KB 88848 KB

总占地123269 kb179584 KB的空间

其他
MySQL的官方解释:InnoDB提供MySQL InnoDB事务安全(酸兼容)存储引擎提交、回滚和崩溃恢复capability.innodb锁定在排级也提供了一个一致的Oracle风格解锁在SELECT语句读取,这增加了用户部署和性能。没有必要扩大在InnoDB锁,因为一行在InnoDB级锁是一个非常适合于小space.innodb还支持外键强制。在SQL查询中,你可以自由地混合InnoDB类型表与其他MySQL表的类型,甚至在同一查询。
InnoDB是为处理海量数据的最大性能设计。它的CPU效率很可能是其他基于磁盘的关系数据库引擎所无法比拟的。
InnoDB存储引擎与MySQL服务器完全集成,和InnoDB存储引擎维持它自己的缓冲池中的表空间的数据缓存和主memory.innodb索引存储表、索引和表空间可以包含多个文件(或原始磁盘分区),例如是不同的MyISAM表,在MyISAM表每个表是在单独的文件中。InnoDB表可以是任何尺寸,即使文件大小限制为2GB的操作系统。
InnoDB是包含在默认情况下,MySQL的二进制分布。Windows安装程序让InnoDB MySQL的要点在Windows默认的表。
InnoDB用于在大量的大型数据库的网站,需要高性能的产品。著名的互联网新闻网站Slashdot.org,运行在InnoDB。mytrix,公司存储数据超过1TB在InnoDB,和其他一些网站处理800插入/更新每秒InnoDB。

相关文章

Solaris系统下磁盘和可移动硬盘的

Solaris系统下磁盘和可移动硬盘的

系统,移动硬盘,磁盘,电脑软件,Solaris,点评:uff1a 1,直接插入ls U盘,然后查看USB设备是否发现。 2、查询USB对应的设备名称(LS - L / dev / DSK)在/ etc / DSK 三.直接monunt F / / DSK开发光纤/ c1t0d0s0 / mnt然后没事去 / mnt目录。LS你可以…

上传视频到优酷网二(图文)

上传视频到优酷网二(图文)

优酷网,上传视频,图文,电脑软件,两种上传优酷视频的方法: 第一种方法:登录优酷并上传视频。 1、打开优酷官方网站,点击右上角,登录到按钮(如图{ 01 }),输入您的账号和密码,成功登录,然后在右上角;上传按钮(图{ 02 })。 2、在弹出窗口中,点击上传视频按…

办公室5in1简体安装版SP3

办公室5in1简体安装版SP3

安装版,简体,办公室,电脑软件,软件介绍: 常用的五个组件,包括Word、Excel、PowerPoint、Access和Outlook(可选安装)。 通过真实的验证支持在线升级漏洞和补丁 综合办公室2007 / 2010的文件夹格式兼容包方便用户打开Office2007 / 2010创建的文…

PHP删除前端复选框多选内容

PHP删除前端复选框多选内容

删除,复选框,多选,内容,电脑软件,复制代码代码如下所示: SQL语句:美元删除`做`在ID('1,2,3,4 '); 数据用逗号隔开。 形式: 复制代码代码如下所示: 好id_dele美元_post { } =美元'id_dele会是一个数组,虽然PHP是弱类型,但没有ASP弱。 asp可以直…

什么过程pqimountsvc过程查询PQIMo

什么过程pqimountsvc过程查询PQIMo

查询,过程,电脑软件,pqimountsvc,PQIMountSvc,点评:PQIMountSvc.exe是Powerquest DriveImage的磁盘镜像软件相关程序 进程文件:pqimountsvc或pqimountsvc.exe 进程名称:PowerQuest DriveImage过程 过程类别:安全风险的过程 英文描述: pqimount…

中国网民发现的winvista不同版本的

中国网民发现的winvista不同版本的

不同版本,安装方法,发现,中国网民,电脑软件,更多相关主题推荐:微软最新的操作系统Windows Vista区域,Windows Vista强大的数字图像处理功能,体验新产品:Win Vista中的新设备,硬盘安装设置 有朋友在Windows Vista安装光盘中的源搜索/ INF文件夹…

计算机在桌面的右下角没有发出小喇

计算机在桌面的右下角没有发出小喇

桌面,右下角,小喇叭,电脑软件,问题: 客户整理了电脑,删除了一些应用程序,发现电脑没有声音,以便帮助解决。 答案uff1a 起初,有人认为是声卡的丢失驱动,进入了设备管理器;看到了,发现驱动器正常。后来,打开了控制面板;在声音和音频设备中找到了音量,…

猎豹与百度、金山村和millet签署了

猎豹与百度、金山村和millet签署了

金山村,百度,猎豹,认购协议,签署了,金山村软件公司今天宣布,猎豹移动(原金山村网)已与金山村软件股份认购协议,百度和Xiaomi。与此同时,这三家公司将共同认购高达5000万美元的同时作为猎豹IPO。 根据公告,金山村软件将认购最多1000万美元的价值,…

PHP命令行参数的详细解释和应用

PHP命令行参数的详细解释和应用

解释,命令行参数,详细,电脑软件,PHP,复制代码代码如下所示: #不带参数的格式 PHP的安装目录 /斌/ PHP scriptname.php #参数的可执行格式。 PHP的安装目录 /斌/ PHP scriptname.php { 1 } { 2 }参数参数…} 访问参数argc argv scriptname.php美元美元 # argv美…

也许火车票售罄门司火车票来帮助你

也许火车票售罄门司火车票来帮助你

火车票,你在,网易,电脑软件,五一假期临近,一些没有提前旅客只能通过购买机票退款方式多是抢票票,售票窗口排队买票的时间参与,成功率非常低;而大多数人选择呆在家里上网的票,它刷新,实时锁定票源的优势。在许多张脸,Jianlou的重任交给谁更可靠小编…

深入了解Linux系统功能

深入了解Linux系统功能

系统功能,电脑软件,Linux,评论:本文将详细介绍Linux系统功能的使用,需要了解的朋友可以参考一下。 系统(shell命令的执行) 相关函数 叉,execve,waitpid,Popen 头文件 我包括 定义函数 int系统(const char *字符串); 功能描述 (系统)会调用fork()产生的子…

iPhone与iPad的连接iTunes错误9800

iPhone与iPad的连接iTunes错误9800

连接,解决方案,错误,电脑软件,iPad,问题: 当iPhone、iPad或iTouch连接到电脑,有一个错误后,打开iTunes。常见的错误代码是:9800, 9815, 9814等,原因是计算机的系统时间问题。 答案uff1a 为了解决这些问题,解决方案是先退出iTunes,然后将计算机系…