mysql 性能优化(二)
今天突然看到一年前写的 mysql 优化(一) ,感觉有些误人子弟。今天再补充一些东西。
关于引擎选择,从理论上 和 实际上 可能会有差距,所以,对待mysql 要有实验精神。
一般来说,
MYisam 适合:
1. 做很多count 的计算。
2. 插入不平凡,查询非常频繁。
3. 没有事务
innordb 非常适合:
1. 可靠性要求比较高,或者要求事务。
2. 表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
当然这也不是绝对的。要试验过才知道。
很多时候,性能瓶颈不是因为服务器配置不好,而是因为SQL不是很好。SQL的性能优化是关键。
除了这些常见的优化方法,
还可以考虑 使用内存表。你测试一张myisam 和 内存表,会发现速度差不多。
其实,在并发比较强的时候,性能会相差大概五倍。我有张经常要查询的IP 地址 和 地区的 对应表,放入内存后。
以前查询 5000个 IP 地址大概 要 15S, 现在,只要 2S多。
很多东西,实际测试过才知道。用什么压力测试,测试出来的也不是很准确。
关于引擎选择,从理论上 和 实际上 可能会有差距,所以,对待mysql 要有实验精神。
一般来说,
MYisam 适合:
1. 做很多count 的计算。
2. 插入不平凡,查询非常频繁。
3. 没有事务
innordb 非常适合:
1. 可靠性要求比较高,或者要求事务。
2. 表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
当然这也不是绝对的。要试验过才知道。
很多时候,性能瓶颈不是因为服务器配置不好,而是因为SQL不是很好。SQL的性能优化是关键。
除了这些常见的优化方法,
还可以考虑 使用内存表。你测试一张myisam 和 内存表,会发现速度差不多。
其实,在并发比较强的时候,性能会相差大概五倍。我有张经常要查询的IP 地址 和 地区的 对应表,放入内存后。
以前查询 5000个 IP 地址大概 要 15S, 现在,只要 2S多。
很多东西,实际测试过才知道。用什么压力测试,测试出来的也不是很准确。