MySQL 效劳器硬件和操纵体系调治:
1. 具有充足的物理内存来把全部InnoDB文件加载到内存中——在内存中接见文件时的速率要比在硬盘中接见时快的多。
2. 不惜一切代价防备运用Swap交流分区 – 交流时是从硬盘读取的,它的速率很慢。
3. 运用电池供电的RAM(注:RAM即随机存储器)。
4. 运用高等的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列) – 最好是RAID10或更高。
5. 防备RAID5(注:一种存储机能、数据平安和存储本钱统筹的存储解决方案) – 确保数据库完整性的校验是要付出代价的。
6. 将操纵体系和数据分区离开,不仅仅是逻辑上,还包括物理上 – 操纵体系的读写操纵会影响数据库的机能。
7. 把MySQL暂时空间和复制日记与数据放到差别的分区 – 当数据库背景从磁盘举行读写操纵时会影响数据库的机能。
8. 更多的磁盘空间等于更快的速率。
9. 更好更快的磁盘。
10. 运用SAS(注: Serial Attached SCSI,即串行衔接SCSI)替代SATA(注:SATA,即串口硬盘)。
11. 较小的硬盘 比 较大的硬盘快,尤其是在RAID设置的状况下。
12. 运用电池支撑的高速缓存RAID控制器。
13. 防备运用软件磁盘阵列。
14. 斟酌为数据分区运用固态IO卡 (不是磁盘驱动器) – 这些卡可以为险些任何数目的数据支撑2GB/s的写入速率。
15. 在Linux中设置swappiness的值为0 – 在数据库效劳器中没有来由缓存文件,这是一个效劳器或台式机的上风。
16. 假如可以的话,运用 noatime 和 nodirtime 挂载文件体系 – 没有来由更新接见数据库文件的修正时刻。
17. 运用 XFS 文件体系 – 一种比ext3更快、更小的文件体系,而且有很多日记选项, 而且ext3 已被证明与MySQL有双缓冲题目。
18. 调解 XFS 文件体系日记和缓冲变量 – 为了最高机能规范。
19. 在 Linux 体系中, 运用 NOOP 或许 DEADLINE IO 定时调理顺序 – 同 NOOP 和 DEADLINE定时调理顺序比拟,这个 CFQ 和 ANTICIPATORY 定时调理顺序 显得异常慢。
20. 运用64位的操纵体系 – 关于MySQL,会有更大的内存支撑和运用。
21. 删除效劳器上未运用的装置包和保卫历程 – 更少的资本占用。
22. 把运用MySQL的host和你的MySQL host放到一个hosts文件中 – 没有DNS查找。
23. 切勿强迫杀死一个MySQL历程 – 你会破坏数据库和正在运转备份的顺序。
24. 把效劳器贡献给MySQL – 背景历程和其他效劳可以收缩数据库占用CPU的时刻。
MySQL 设置:
25. 当写入时,运用 innodb_flush_method=O_DIRECT 来防备双缓冲。
26. 防备运用 O_DIRECT 和 EXT3 文件体系 – 你将序列化一切要写入的。
27. 分派充足的 innodb_buffer_pool_size 来加载全部 InnoDB 文件到内存中– 少从磁盘中读取。
28. 不要将 innodb_log_file_size 参数设置太大, 如许可以更快同时有更多的磁盘空间 – 丢掉多的日记通常是好的,在数据库崩溃后可以下降恢复数据库的时刻。
29. 不要混用 innodb_thread_concurrency 和 thread_concurrency 参数– 这2个值是不兼容的。
30. 分派一个极小的数目给 max_connections 参数 – 太多的衔接会用尽RAM并锁定MySQL效劳。
31. 坚持 thread_cache 在一个相对较高的数字,约莫 16 – 防备翻开衔接时迟缓。
32. 运用skip-name-resolve参数 – 去掉 DNS 查找。
33.假如你的查询都是反复的,而且数据不常常发生变化,那末可以运用查询缓存。然则假如你的数据常常发生变化,那末运用查询缓存会让你觉得扫兴。
34.增大temp_table_size值,以防备写入磁盘
35.增大max_heap_table_size值,以防备写入磁盘
36.不要把sort_buffer_size值设置的太高,不然的话你的内存将会很快耗尽
37.依据key_read_requests和key_reads值来决议key_buffer的大小,平常状况下key_read_requests应当比key_reads值高,不然你不能高效的运用key_buffer
38.将innodb_flush_log_at_trx_commit设置为0将会进步机能,然则假如你要坚持默认值(1)的话,那末你就要确保数据的完整性,同时你也要确保复制不会滞后。
39.你要有一个测试环境,来测试你的设置,而且在不影响一般生产的状况下,可以常常举行重启。
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设置文件.
查询优化:
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.
相干引荐:
必看js断点调试心得分享
JavaScript调试必备的5个debug技能分享
js调试要领有哪些
以上就是最全的MySQL调试与优化技能的细致内容,更多请关注ki4网别的相干文章!