首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化MySQL存储引擎

如何优化MySQL存储引擎
EN

Stack Overflow用户
提问于 2016-04-29 06:12:36
回答 1查看 130关注 0票数 1

我的数据库只有500万行,但是内部连接和占用时间很长(55秒,60秒)。因此,我正在检查我的MyISAM设置是否有问题。

查询:显示的状态类似于‘键%’

代码语言:javascript
复制
+------------------------+-------------+
| 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性能的建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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)。如果表中包含一个可变长列,则该表使用动态行格式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36930794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档