MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1844|回复: 2
打印 上一主题 下一主题

咨询一个数据表优化的问题,请帮忙

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-28 22:15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于业务需求,数据要求实时查询展示,所以,是一个表承担了数据的插入、修改、删除和查询的职能。
表字段有20个,其中有不少varchar字段类型。
最初对mysql不了解,所以设计上没有做太多考虑。说下问题:
运行了半年,表数据大概有50万左右,表容量为300M,索引容量为160M,由于查询的要求,关联查询和order by desc查询较多,所以建立了6个复合索引。插入和修改的频率很高,基本上每分钟最少10次更新查询,最高的时候可以达到上百次,为多个终端进行操作。
现在的问题是:如果停止更新,查询效率很高,即便是关联查询基本都在1秒内可以完成,但一旦启动终端使用,更新操作开始,查询效率变的很低,更新操作也是如此,最简单的一个delete操作,都会耗费30秒的时间。初步判断是索引太多,每次更新会对索引操作造成影响。
服务器性能不高为:酷睿双核 4GB内存
做了不少优化,效果一般,对此表做了分区处理,但性能提升不明显,基本和以前效果一样。
请教各位,这种情况还可以做哪些优化?将此表拆分成多个表操作?还是通过mysql的优化方法就可以了,请多多指教


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2012-8-29 10:31:44 | 只看该作者
首先你的表不大,应该是设计问题带来的性能问题。试试以下优化:
1、用innodb表引擎,使用行锁
2、表不大,索引多,建议把联合索引都拆成单个索引,可能效果要好些,不要有重复索引,同时文本字段的话建“前置”索引。
3、打开慢日志,用explain具体分析慢SQL
...
3#
 楼主| 发表于 2012-8-29 11:07:55 | 只看该作者
谢谢kider的答复

表引擎我修改过,现在用的是myisam引擎,看到资料说innodb是行锁定,所以我修改测试过,在什么都不进行修改的情况下,仅修改引擎为innodb,反而查询效率变低了,一直不得其解。

查看资料,mysql对order by desc支持不是很好,需要将查询的条件和内容建立到复合索引中才可以使用所以进行order by desc,不知理解是否正确,如果都建立独立所以,是否会对order by desc查询造成影响,现在系统的order by desc基本上都是时间排序

查看了一下系统状态,存在Copying to tmp table on disk或Copying to tmp table状态较多,是否可以通过增大tmp_table_size解决?

盼赐教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-11-25 14:27 , Processed in 0.057435 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表