我的数据库只有500万行,但是内部连接和占用时间很长(55秒,60秒)。因此,我正在检查我的MyISAM设置是否有问题。
查询:显示的状态类似于‘键%’
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 275029 |
| Key_blocks_used | 3316428 |
| Key_read_requests | 11459264178 |
| Key_reads | 3385967 |
| Key_write_requests | 91281692 |
| Key_writes | 27930218 |
+------------------------+-------------+给我你关于提高MyISAM性能的建议
发布于 2016-04-29 06:25:36
我使用过超过45 was的数据库,我也面临着性能问题,
以下是我为提高业绩而采取的一些措施。
(1)删除表中任何不必要的索引,特别注意唯一索引,因为这些索引禁用了更改缓冲。如果没有这个约束的理由,不要使用唯一的索引;更喜欢常规索引。
(2)按顺序插入将减少分页(这将在没有内存的表上执行),并且大容量加载与表大小无关,但它将有助于降低重做日志压力。
(3)如果批量加载一个新表,则延迟创建除主键之外的任何索引。如果您在加载所有数据之后创建它们,那么InnoDB就能够应用预排序和批量加载过程,这不仅速度更快,而且通常会产生更紧凑的索引。这种优化在MySQL 5.5中成为现实。
(4)确保使用InnoDB而不是MyISAM。MyISAM可以更快地插入到表的末尾。Innodb是行级锁定,MYISAM是表级锁定。
(5)尽量避免频繁更新的MyISAM表上复杂的SELECT查询,并使用在第一个条件下返回较少结果的查询
(6)对于频繁更改的MyISAM表,尽量避免所有可变长度列(VARCHAR、BLOB和TEXT)。如果表中包含一个可变长列,则该表使用动态行格式。
https://stackoverflow.com/questions/36930794
复制相似问题