tyl*_*erl 3 mysql optimization performance performance-tuning
我正在寻找用于调整用于中型网站的 MySQL 服务器的常见陷阱和优化的简要列表。
一般来说,我在这里寻找的建议类型是普通开发人员或管理员可以轻松实施的信息,这些信息将为他的网站的性能带来可衡量的好处。
举个例子
这是我从阅读高性能 MySQL 中学到的一个技巧,我经常看到它用于:
当使用 MyISAM 存储引擎(默认)时,服务器将在执行 DELETE 或 UPDATE 操作时锁定整个表,或者在执行未附加到表末尾的 INSERT 时(因为有一个“洞”从之前的 DELETE)。在操作完成之前,没有其他查询可以使用该表。
因此,如果使用除“INSERT”以外的任何操作看到大量修改,您应该在任何频繁使用的表上使用 InnoDB 或其他行级锁定引擎。
以下是我在 MySQL 优化中遇到的一些问题:
如果您发现您的数据库服务器(尤其是 MySQL 进程)正在使用大部分 CPU 时间,则可能意味着您缺少索引或需要优化查询。
打开慢查询日志记录并跟踪这些慢查询以找出如何优化它们。对慢查询使用“explain”来找出它们慢的原因。MySQL 文档有几个关于如何解释这些结果的部分。
使用 memcached 尽可能长时间地缓存任何查询的结果。这非常快,并且能够缓存许多内部 MySQL 查询缓存无法缓存的内容,但只能在您知道数据可以长期缓存或手动使缓存过期的情况下使用。
在数据库系统上设置“munin”以开始收集有关系统利用率和数据库查询负载的信息。
确保你的系统有足够的内存,你不会交换,希望也足够你做很少的磁盘读取(使用 vmstat 或 munin 来监视这个)。这意味着数据由 MySQL 或磁盘缓冲区缓存提供。
肖恩