教你加快mysql数据库
选择你的引擎
数据库引擎可以使用取决于MySQL编译安装后,添加一个新的引擎,你必须重新编译MySQL。Windows开发者编写应用程序来添加一个特性很奇怪,但是在UNIX世界,这已经成为了一种标准。在默认情况下,MySQL支持三引擎:的MyISAM,和堆。其他两型,InnoDB和Berkley(BDB),通常用。
ISAM
ISAM是一个定义明确的和经过时间考验的数据表管理方法。设计时,考虑到数据库被查询的次数比更新的数量大得多。因此,ISAM执行读操作快速,不占用大量的内存和存储资源,该两个主要缺点是它不支持事务处理或故障宽容:如果你的硬盘崩溃,数据文件将不可恢复。如果你使用的是ISAM在关键任务的应用程序,你必须经常备份你所有的实时数据,并可以通过MySQL复制功能支持这样的备份应用程序。
MyISAM
MyISAM是MySQL的ISAM扩展格式,默认的数据库引擎,除了提供大量的功能指标和现场管理在ISAM,MyISAM也用一种形式来优化多个并发的读写操作的锁机制,代价就是你需要运行优化表命令恢复的定期更新mechanism.myisam浪费的空间也有一些有用的扩展,如用于修复用于恢复数据库文件和浪费空间的MyISAMPack工具myisamchk工具。
MyISAM强调快速读取操作,这可能是主要原因为什么MySQL一直如此受欢迎,网站开发:网站开发,大量的数据操作,你是读操作。因此,大多数虚拟主机提供商和网络平台服务提供者(Internet Presence Provider,IPP)只允许使用MyISAM格式。
堆
堆允许临时表,只驻留内存,在内存使堆比ISAM和MyISAM更快,但它所管理的数据是不稳定的,如果它不保存关机前,所有的数据都将丢失。当数据线删除,堆不浪费很多空间,堆表是非常有用的当你需要使用SELECT表达式来选择和操作数据。记住,的形式使用后删除形式。让我重复一遍:在你用完,不要忘记删除表格。
InnoDB和Berkley DB
InnoDB和Berkley DB(BDB)数据库引擎会创建MySQL的灵活性的技术的直接产品,这是MySQL++ API,使用MySQL的时候,几乎每一个挑战你面对来自ISAM和MyISAM数据库引擎不支持事务处理或支持外键。虽然它比ISAM和MyISAM引擎要慢得多,InnoDB和BDB包括事务处理和外键的支持,这在最初的两个引擎是不可用的。正如前面提到的,如果你的设计需要这些特征之一或两者,那么你不得不用一个引擎。
如果你觉得你真的很熟练,你也可以使用MySQL++来创建自己的数据库引擎。这个API为您提供了经营领域、功能记录,表格,数据库连接,安全帐户,和建筑的所有其他功能,如MySQL数据库的需要。它超出了这篇文章范围彻底解释的API,但它是非常重要的你了解MySQL + +和它背后的技术的存在。据估计,这个插件数据库引擎的模型可以被用来创建一个本地XML(XML提供商)提供MySQL。(任何MySQL的C++开发者阅读本文认为这是一个要求。)
让所有的灵活性可能的开关是MySQL的扩展,提供ANSI SQL的类型parameter.mysql允许你桌上指定数据库引擎,所以他们有时指表格式。下面的示例代码演示了如何创建一个表,用MyISAM、法和堆发动机,分别注为创建每个表的代码是一样的,这个参数是用来除最后一种类型参数指定数据引擎。
复制代码代码如下所示:
创建表(tblmyisam
我没有空auto_increment int,
主键(id),
value_a tinyint
MyISAM类型=)
创建表tblisam(
我没有空auto_increment int,
主键(id),
value_a tinyint
) TYPE=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和没有被激活,它是无用的,和MySQL不会提示这个。它只会给你提供一个默认的格式(形式MyISAM)。除了使用默认的格式,有使MySQL给出错误提示的方法。但目前,如果不能确定是否有特定的数据库引擎,则需要使用show表检查表格格式。
更多的选择意味着更好的性能。
对特定表的引擎需要重新编译和跟踪。考虑到额外的复杂性,为什么还要使用非默认数据库引擎答案很简单:调整数据库以满足您的需求。
可以肯定的是,MyISAM是快,但如果你的逻辑设计需要事务处理,你可以自由使用的引擎支持事务处理。进一步说,因为MySQL允许您将数据库引擎在桌子上,你只能优化需要事务处理的表,并交不需要事务处理到更轻便的MyISAM引擎的表,MySQL,灵活性是关键。