InnoDB最佳实现

来源:互联网 发布:淘宝图片轮播什么意识 编辑:程序博客网 时间:2024/06/16 14:42

InnoDB最佳实现

  1. 用查询最频繁的一个或多个列作为主键,如果没有明显的主键,可以用自增列作为主键。
  2. 从多个表中取数据时,如表与表之间的关联基于恒等的值,使用join。使用外键有几个可以带来较快查询性能的技巧:

    • 为关联列创建外键,并声明成相同的数据类型。
    • 为关联列创建索引。

    外键会把删除修改操作扩散到相关联的表中,如果子表中不存在关联的id,写操作会被阻止。

  3. 关闭自动提交。
  4. 使用START TRANSACTION, COMMIT将大量的DML(INSERT, UPDATE, DELETE)语句分散到不同的事务中。即便是不想太频繁地提交事务,也不能一次提交一个一次跑几个小时的事务。
  5. 不使用锁表语句。在不牺牲可能性和高性能的前提下,InnoDB可以对同一张表同时处理多个对话的所有读写请求。通过SELECT ... FOR UPDATE语句来锁住想要修改的行,这样可以获取写操作独占的行。
  6. 激活innodb_file_per_talbe选项,将数据和索引放在表对应单独的文件中,而不是把所有表的数据、索引放在一个巨大的系统空间。innodb_file_per_talbe选项从5.6.6版本开始使用。
  7. 创建表示使用压缩(CREATE TABLE (…) ROW_FORMAT=COMPRESSED)。压缩不会牺牲读写性能。
  8. 当创建表无法指定引擎时,我们可以在启动server时指定选项--sql_mode=NO_ENGINE_SUBSTITUTION来防止表被创建成使用其他类型的引擎的表。
0 0
原创粉丝点击