MYSQL存储引擎InnoDB(二):使用注意点

验证 InnoDB 是默认存储引擎

使用SHOW ENGINES语句以查看可用的 MySQL 存储引擎。在SUPPORT 列中查找DEFAULT。

mysql> SHOW ENGINES;

或者,查询 INFORMATION_SCHEMA.ENGINES表。

mysql> SELECT * FROM INFORMATION_SCHEMA.ENGINES;

使用 InnoDB 进行测试和基准测试

如果InnoDB不是默认存储引擎,您可以通过在命令行中设置--default-storage-engine=InnoDB重新启动服务或在 MySQL 服务器选项文件mysqld中设置default-storage-engine=innodb重新启动服务来确定您的数据库服务器和应用程序是否正常使用InnoDB工作。

由于更改默认存储引擎只会影响新创建的表,因此请运行应用程序安装和设置步骤以确认一切安装正确,然后使用应用程序功能确保数据加载、编辑和查询功能正常工作。如果表依赖于特定于另一个存储引擎的功能,您会收到错误消息。在这种情况下,将ENGINE=other_engine_name子句添加到CREATE TABLE语句以避免错误。

如果您没有对存储引擎做出深思熟虑的决定,并且想要预览某些表在使用InnoDB创建时是如何工作的,请为每个表发出命令 ALTER TABLE table_name ENGINE=InnoDB。或者,要在不影响原始表的情况下运行测试查询和其他语句,请制作一份副本:

CREATE TABLE ... ENGINE=InnoDB AS SELECT * FROM other_engine_table;

要在实际工作负载下评估完整应用程序的性能,请安装最新的 MySQL 服务器并运行基准测试。

测试时需要测试整个应用程序生命周期,从安装到大量使用,再到服务器重启。在数据库繁忙时杀死服务器进程以模拟断电,并在重新启动服务器时验证数据是否恢复成功。

还需要测试配置的复制,尤其是当您在源服务器和副本上使用不同的 MySQL 版本和选项时。

InnoDB 表的最佳实践

1、使用最频繁查询的一个或多个列为每个表指定一个主键,如果没有明显的主键,则指定一个自动增量值。

2、在基于这些表中相同的 ID 值从多个表中提取数据的地方使用连接。为了保证连接性能,在连接列上定义外键,并在每个表中声明这些列具有相同的数据类型。添加外键可确保对引用的列进行索引,从而提高性能。外键还会将删除和更新传播到所有受影响的表,如果父表中不存在相应的 ID,则防止在子表中插入数据。

3、关闭自动提交。每秒提交数百次会限制性能(受存储设备的写入速度限制)。

4、通过使用START TRANSACTION和 COMMIT语句 将相关的 DML 操作组合成事务。虽然您不想过于频繁地提交,但您也不想发出大量运行数小时而不提交的INSERT、UPDATE或DELETE语句。

5、不要使用LOCK TABLES 语句。InnoDB可以同时处理多个会话,同时读取和写入同一个表,而不会牺牲可靠性或高性能。要获得对一组行的独占写入访问权限,请使用 SELECT ... FOR UPDATE语法仅锁定您打算更新的行。

6、启用 innodb_file_per_table 变量或使用通用表空间将表的数据和索引放入单独的文件而不是系统表空间。默认情况下启用 innodb_file_per_table 变量。

7、评估您的数据和访问模式是否受益于InnoDB表或页面压缩功能。您可以在不牺牲读/写能力的情况下压缩InnoDB表。

8、使用--sql_mode=NO_ENGINE_SUBSTITUTION选项运行服务器以防止使用您不想使用的存储引擎创建表。

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/36225.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2022年5月17日 21:22
下一篇 2022年5月17日 21:22

相关推荐

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息