技术开发 频道

DBA必读:SQL数据库调优的101个技巧

  MySQL模式优化:

  40. 保持你的数据库整理性。

  41. 旧数据归档——删除多余的行返回或搜索查询。

  42. 将您的数据加上索引.

  43. 不要过度使用索引,比较与查询.

  44. 压缩文字和BLOB数据类型——以节省空间和减少磁盘读取次数.

  45. UTF 8和UTF16都低于latin1执行效率.

  46. 有节制地使用触发器.

  47. 冗余数据保持到最低限度——不重复不必要的数据.

  48. 使用链接表,而不是扩展行.

  49. 注意数据类型,在您的真实数据中,尽可能使用最小的一个.

  50. 如果其他数据经常被用于查询时,而BLOB / TEXT数据不是,就把BLOB / TEXT数据从其他数据分离出来.

  51.检查和经常优化表.

  52. 经常重写InnoDB表优化.

  53. 有时,当添加列时删除索引,然后在添加回来索引,这样就会更快.

  54. 针对不同的需求,使用不同的存储引擎.

  55. 使用归档存储引擎日志表或审计表-这是更有效地写道.

  56. 会话数据存储在缓存(memcache)的而不是MySQL中——缓存允许自动自动填值的,并阻止您创建难以读取和写入到MySQL的时空数据.

  57.存储可变长度的字符串时使用VARCHAR而不是CHAR——节省空间,因为固定长度的CHAR,而VARCHAR长度不固定(UTF8不受此影响).

  58. 逐步进行模式的变化——一个小的变化,可以有巨大的影响.

  59.在开发环境中测试所有模式,反映生产变化.

  60. 不要随意更改你的配置文件中的值,它可以产生灾难性的影响.

  61. 有时候,在MySQL的configs少即是多.

  62.有疑问时使用一个通用的MySQL配置文件.

DBA必读:SQL数据库调优的101个技巧

  63. 使用慢查询日志去发现慢查询。

  64. 使用执行计划去判断查询是否正常运行。

  65. 总是去测试你的查询看看是否他们运行在非常好的状态下 –久而久之性能总会变化。

  66. 避免在整个表上使用count(*),它可能锁住整张表。

  67. 使查询保持一致以便后续相似的查询可以使用查询缓存。

  68. 在适当的情形下使用GROUP BY而不是DISTINCT。

  69. 在WHERE, GROUP BY和ORDER BY子句中使用有索引的列。

  70. 保持索引简单,不在多个索引中包含同一个列。

  71. 有时候MySQL会使用错误的索引,对于这种情况使用USE INDEX。

  72. 检查使用SQL_MODE=STRICT的问题。

  73. 对于记录数小于5的索引字段,在UNION的时候使用LIMIT不是是用OR.

  74. 为了避免在更新前SELECT,使用INSERT ON DUPLICATE KEY或者INSERT IGNORE ,不要用UPDATE去实现。

  75. 不要使用 MAX,使用索引字段和ORDER BY子句。

  76. 避免使用ORDER BY RAND.

  77. LIMIT M,N实际上可以减缓查询在某些情况下,有节制地使用。

  78. 在WHERE子句中使用UNION代替子查询。

  79. 对于UPDATES(更新),使用 SHARE MODE(共享模式),以防止独占锁。

  80. 在重新启动的MySQL,记得来温暖你的数据库,以确保您的数据在内存和查询速度快。

  81. 使用DROP TABLE,CREATE TABLE DELETE FROM从表中删除所有数据。

  82. 最小化的数据在查询你需要的数据,使用*消耗大量的时间。

  83. 考虑持久连接,而不是多个连接,以减少开销。

  84. 基准查询,包括使用服务器上的负载,有时一个简单的查询可以影响其他查询。

  85. 当负载增加您的服务器上,使用SHOW PROCESSLIST查看慢的和有问题的查询。

  86. 在开发环境中产生的镜像数据中 测试的所有可疑的查询。

  MySQL 备份过程:

  87. 从二级复制服务器上进行备份。

  88. 在进行备份期间停止复制,以避免在数据依赖和外键约束上出现不一致。

  89. 彻底停止MySQL,从数据库文件进行备份。

  90. 如果使用MySQL dump进行备份,请同时备份二进制日志文件——确保复制没有中断。

  91. 不要信任LVM 快照——这很可能产生数据不一致,将来会给你带来麻烦。

  92. 为了更容易进行单表恢复,以表为单位导出数据——如果数据是与其他表隔离的。

  93. 当使用mysqldump时请使用——opt。

  94. 在备份之前检查和优化表。

  95. 为了更快的进行导入,在导入时临时禁用外键约束。

  96. 为了更快的进行导入,在导入时临时禁用唯一性检测。

  97. 在每一次备份后计算数据库,表以及索引的尺寸,以便更够监控数据尺寸的增长。

  98. 通过自动调度脚本监控复制实例的错误和延迟。

  99. 定期执行备份。

  100. 定期测试你的备份。

  最后101: 执行MySQL 监控: Monitis Unveils The World’s First Free On-demand MySQL Monitoring。

DBA必读:SQL数据库调优的101个技巧

  原文链接:http://www.oschina.net/translate/101-tips-to-mysql-tuning-and-optimization

1
相关文章