mysql优化 - mysql 单表优化求方案
问题描述
背景数据量:数据量大约3000w+ ,数据大小10g,索引30g,如下图。
需求:需要比较多的group by 操作和全量数据操作。
问题:各种group by 特别慢。
已尝试方案:1:尝试放es,但操作非常不方便。
2:数据表分表,成本比较大,从时间和业务角度都没有比较好的分表方案。
3:读写分离,分离之后效果提升不大。
4:在尝试postgresql,但需要业务较大的变动,暂未试试。
求存储或者优化方案,最好是存储在mysql上优化,其他存储介质也可以。
问题解答
回答1:大表优化无非就建索引、数据水平切分、竖直切分,该用的你都测了,没见你把表结构和索引截出来也不好说,索引不要建太多。建议是从业务层面上去优化,看是否需要分页,即使是全量数据操作,用预统计是否合适,是否需要冗余字段来让group by更充分利用索引。
回答2:group by 优化方案Loose Index Scan和Tight Index Scan 。中文叫做松散索引扫描和紧凑索引扫描具体可以参考官方文档http://dev.mysql.com/doc/refm...
回答3:sphinx 试试?
回答4:postgresql对多表关联和count支持速度怎样?测试的mysql多表关联,慢!索引优化确实很关键;还有就是多表关联后的视图,排序、count分页等速度更加难以想象。这里想回问下你们怎么解决多表关联、视图、分页的问题,看样索引是真没少建啊。
回答5:该用的你都测试了,全量数据操作我也没想出来什么好的办法了。对于group by操作,如果是固定的sql(业务需要),
1)可以考虑用存储过程将常用sql的结果定时生成新表的数据。2)将常用的sql字段分拆,再优化
相关文章:
1. java - mybatis怎么实现在数据库中有就修改,没有就添加2. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题3. MYSQL新建用户设置可以远程访问的问题4. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)5. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?6. angular.js - angularjs的自定义过滤器如何给文字加颜色?7. linux - 为什么我在mysql的my.cnf下找不到bind-address?8. mysql - 我的myeclipse一直连显示数据库连接失败,不知道为什么9. 各位谁知道这个CSS时候哪里出错了???10. mysql - SQL操作时间的函数?
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)