当前位置:Gxlcms > mysql > 为MySQL数据库换挡加速(2)_MySQL

为MySQL数据库换挡加速(2)_MySQL

时间:2021-07-01 10:21:17 帮助过:21人阅读

让所有的灵活性成为可能的开关是提供给ANSI SQL的MySQL扩展――TYPE参数。MySQL能够让你在表格这一层指定数据库引擎,所以它们有时候也指的是table formats。下面的示例代码表明了如何创建分别使用MyISAM、ISAM和HEAP引擎的表格。要注意,创建每个表格的代码是相同的,除了最后的TYPE参数,这一参数用来指定数据引擎。


  CREATE TABLE tblMyISAM (
  id INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  value_a TINYINT
  ) TYPE=MyISAM
  CREATE TABLE tblISAM (
  id INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  value_a TINYINT
  ) TYPE=ISAM
  CREATE TABLE tblHeap (
  id INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (id),
  value_a TINYINT
  ) TYPE=Heap


  你也可以使用ALTER TABLE命令,把原有的表格从一个引擎移动到另一个引擎。下面的代码显示了如何使用ALTER TABLE把MyISAM表格移动到InnoDB的引擎:


  ALTER TABLE tblMyISAM CHANGE TYPE=InnoDB


  MySQL用三步来实现这一目的。首先,这个表格的一个副本被创建。然后,任何输入数据的改变都被排入队列,同时这个副本被移动到另一个引擎。最后,任何排入队列的数据改变都被送交到新的表格里,而原来的表格被删除。

  ALTER TABLE捷径

  如果只是想把表格从ISAM更新为MyISAM,你可以使用mysql_convert_table_format命令,而不需要编写ALTER TABLE表达式。

  你可以使用SHOW TABLE命令(这是MySQL对ANSI标准的另一个扩展)来确定哪个引擎在管理着特定的表格。SHOW TABLE会返回一个带有多数据列的结果集,你可以用这个结果集来查询获得所有类型的信息:数据库引擎的名称在Type字段里。下面的示例代码说明了SHOW TABLE的用法:


  SHOW TABLE STATUS FROM tblInnoDB


  SHOW TABLE的替换方法

  你可以用SHOW CREATE TABLE [TableName]来取回SHOW TABLE能够取回的信息。最后,如果你想使用没有被编译成MySQL也没有被激活的引擎,那是没有用的,MySQL不会提示这一点。而它只会给你提供一个缺省格式(MyISAM)的表格。除了使用缺省的表格格式外,还有办法让MySQL给出错误提示,但是就现在而言,如果不能肯定特定的数据库引擎是否可用的话,你要使用SHOW TABLE来检查表格格式。

  更多的选择意味着更好的性能

  用于特定表格的引擎都需要重新编译和追踪,考虑到这种的额外复杂性,为什么你还是想要使用非缺省的数据库引擎呢?答案很简单:要调整数据库来满足你的要求。

  可以肯定的是,MyISAM的确快,但是如果你的逻辑设计需要事务处理,你就可以自由使用支持事务处理的引擎。进一步讲,由于MySQL能够允许你在表格这一层应用数据库引擎,所以你可以只对需要事务处理的表格来进行性能优化,而把不需要事务处理的表格交给更加轻便的MyISAM引擎。对于MySQL而言,灵活性才是关键。

人气教程排行