InnoDB简介之InnoDB表的最佳实践

InnoDB表的最佳实践

本节描述使用InnoDB表的最佳实践。

  • 为每个表中查询最频繁的一个或多个列指定主键,如果没有明显的主键,可以使用自增(auto-increment)。
  • 基于相同的ID值进行多表关联查询时。为了提高性能,在连接列上定义外键,并在每个表中声明具有相同数据类型的列。添加外键可以确保引用的列被索引,这可以提高性能。更新或删除主表时,子表也会跟着更新或者删除,并防止在父表中没有相应的id时在子表中插入数据。
  • 关闭自动提交。每秒提交数百次会限制性能(受存储设备的写入速度限制)。
  • 通过使用START TRANSACTION和COMMIT语句将相关的DML操作集分组到事务中。虽然您不希望过于频繁地提交,但也不希望发出大量的INSERT、UPDATE或DELETE语句,这些语句在没有提交的情况下运行数小时。
  • 不使用LOCK TABLES 表语句。InnoDB可以同时处理多个会话对同一个表的读写,而不会牺牲可靠性和高性能。要获得对一组行的独占写访问权,请使用SELECT … FOR UPDATE ,仅锁定要更新的行。
  • 启用innodb_file_per_table选项或使用常规表空间将表的数据和索引放入单独的文件中,而不是系统表空间。
  • 默认情况下,innodb_file_per_table选项是启用的。
  • 评估您的数据和访问模式是否受益于InnoDB表或页面压缩特性。您可以压缩InnoDB表而不牺牲读/写功能。
  • 使用选项——sql_mode=NO_ENGINE_SUBSTITUTION运行服务器,以防止在CREATE TABLE的engine =子句中指定的引擎出现问题时使用不同的存储引擎创建表。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值