千万级的大表!MySQL这样优化更好
对于一个千万级的大表,现在可能更多的是亿级数据量,很多人第一反应是各种切分,可结果总是事半功倍,或许正是我们优化顺序的不正确。下面我们来谈谈怎样的优化顺序可以让效果更好。
MySQL数据库一般都是按照下面的步骤去演化,成本也是由低到高:
1/ SQL优化
1. 避免使用select *
返回结果过多,降低查询的速度;
过多的返回结果,增加数据传输量;
2. 可确定返回记录数的,尽量增加limit n;
3. 尽量少用like查询,会导致索引失效;
2/ 软件优化
1. 选择合理的引擎
MyISAM索引顺序访问方法,支持全文索引,非事务安全,不支持外键,会加表级锁;
InnoDB事务型存储引擎,加行锁,支持回滚,崩溃恢复,ACID事务控制;
2. 正确使用索引
结合适的列表建立索引;
索引值应该不相同,唯一值时效果最好,大量重复效果很差;
不能滥用索引,索引占用空间;
使用短索引,存的索引多,消耗IO更小,能提高查找速度;
3. 字段尽量设置成NOT NULL
NULL占空间,对于Java和OC强类型的,容易千万APP闪退;
4. MySQL分区表
3/ 硬件优化
1. Linux内核用内存开缓存存储数据;
2. 增加应用缓存,例如Memcached、Redis读写性能非常高;
3. 用SSD代替机械硬盘
日志和数据分开存储,日志顺序读写 - 机械硬盘,数据随机读写 - SSD;
4. SSD+SATA混合存储,对热数据缓存,例如:FlashCache;
4/ 架构优化
1. 读写分离
可以把数据库读和写拆开,对应主从服务器,主服务器写操作、从服务器是读操作;
读是一些机器,写是一些机器,二进制文件的主从复制,延迟解决方案;
主服务器写操作的同时,同步到从服务器,保持数据完整性——主从复制;
2. 垂直拆分
根据模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统;
字段分成多个表;
3. 水平拆分
分表:数据分成多个表,拆分后的每张表的表头相同;
分库:类型方案有Cobar(阿里开源,无更新)、MyCat(基于Cobar);
总结
尽我们所能去优化SQL吧!它成本最低,却又是一项费时费力的活,需要在技术与业务都熟悉的情况下,用心去优化才能做到最优,优化后效果也是立竿见影的!
千万级的大表!MySQL这样优化更好的更多相关文章
- phper使用MySQL 针对千万级的大表要怎么优化?
有需要学习交流的友人请加入交流群的咱们一起,群内都是1-7年的开发者,希望可以一起交流,探讨PHP,swoole这块的技术 或者有其他问题 也可以问,获取swoole或者php进阶相关资料私聊管理即可 ...
- MySQL 对于千万级的大表要怎么优化?
作者:哈哈链接:https://www.zhihu.com/question/19719997/answer/81930332来源:知乎著作权归作者所有,转载请联系作者获得授权. 第一优化你的sql和 ...
- MySQL 对于千万级的大表要怎么优化
转自知乎 作者:哈哈链接:http://www.zhihu.com/question/19719997/answer/81930332来源:知乎著作权归作者所有,转载请联系作者获得授权. 很多人第一反 ...
- mysql大表设计以及优化
MYSQL千万级数据量的优化方法积累https://m.toutiao.com/group/6583260372269007374/?iid=6583260372269007374 MySQL 千万级 ...
- Mysql千万级记录表分表策略
目前,比较流行的分表为2倍扩容. 表A(id, name, age, sex) 基于自增id分表, 通过触发器先同步A到B, 程序通过mod 2操作数据,然后drop掉触发器,在 删除两个A表的偶数i ...
- 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案(转)
问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...
- 转载:记录一次MySQL两千万数据的大表优化解决过程
地址:https://database.51cto.com/art/201902/592522.htm 虽然是广告文,但整体可读性尚可.
- 记一次SqlServer大表查询语句优化和执行计划分析
数据库: sqlserver2008r2 表: device_data 数据量:2000w行左右 表结构 CREATE TABLE [dbo].[device_data]( [Id] [int] ID ...
- jQuery.Validate.js验证大表单的优化
最近在项目中有遇到一个Form表单中有200多个标签.在提交表单时网页会出现等待时间很长,甚至会出现网页奔溃的情况. 主要的原因是因为在使用jQuery.Validate.js进行Form验证的时候会 ...
随机推荐
- JDBC二部曲之_入门
JDBC 1 什么是JDBC? JDBC(Java DataBase Connectivity),即Java数据库连接!也就是说,Java程序员可以使用JDBC API来操作数据库. 最早JDBC是J ...
- uva11107(后缀数组)
uva11107 题意 输入 n 个 DNA 序列,求出长度最大的字符串,使得它在超过一半的 DNA 序列中连续出现.如果有多解,按字典序输出. 分析 论文 后缀数组经典题.加深几个关键数组的印象. ...
- 树的直径【p3629】[APIO2010]巡逻
Description 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任一 ...
- Lightoj 1348 Aladdin and the Return Journey (树链剖分)(线段树单点修改区间求和)
Finally the Great Magical Lamp was in Aladdin's hand. Now he wanted to return home. But he didn't wa ...
- 路由器漏洞利用工具RouterSploit
路由器漏洞利用工具RouterSploit 网络中存在大量的嵌入式设备,如路由器.智能摄像头.这类设备安全防护程度较低.由于这些设备更新不方便,一旦发现漏洞,往往不能及时修复.所以,在网络渗透测试中 ...
- 洛谷 P4538 收集邮票
题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...
- Delphi制作QQ自动登录器源码
Delphi制作QQ自动登录器源码 http://www.cnblogs.com/sunsoft/archive/2011/02/25/1964967.html 以TM2009为例,检查了一下,未登 ...
- Android background tint颜色渲染
该篇文章主要是讲Android颜色渲染,首先先来看看PorterDuff,对绘图非常重要. PorterDuff的由来: 相信大多数人看到这个ProterDuff单词很奇怪了吧,这肿么个意思呢,然后就 ...
- apache的order allow deny
这个东西确实挺容易让我们迷糊.其实也不难,只要你掌握这样一条规律即可:首先举个例子: Order deny,allowdeny from allallow from 127.0.0.1 我们判断的依 ...
- JSON-JSON 百科
1,百度百科 http://baike.baidu.com/view/136475.htm?fr=aladdin 2,JSON教程 http://www.w3school.com.cn/json/