VC中文网-VC-MFC编程论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 937|回复: 20
打印 上一主题 下一主题

Mysql 千万以上数据优化体例(一,SQL优化),月薪30K之路系列

[复制链接]

12

主题

43

帖子

26

金币

连长

Rank: 7Rank: 7Rank: 7

积分
129
跳转到指定楼层
楼主
发表于 2018-11-30 20:58:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

前天写了一篇文章《Mysql数据过了500W如何优化?月薪从5K到25K》,阅读量1天破万,说实话,完全出乎我意料(想看朋友可以关注我,并且点开我头像查找阅读),很多朋友评论中提到写的太简单了,没有写明体例论,虽然个人觉得,具体操作体例完全可以百度,在头条上抱着手机看,太吃力。。。可是鉴于有朋友喜欢,我就挨个详细弥补一下吧。

声明:我会本着手机读者体验的角度,尽量简洁


1,单库表别太多,一般连结在200以下为宜

2,尽量避免SQL中呈现运算,例如select a+5 from A,让DB功能单一化

3,表设计尽量小而精,能用5个字段就不要用6个(不断对,取决于业务,该冗余时坚决不要手软)

4,SQL事务不克不及设计太大,好比一次性提交10W条insert,固然这个不但仅是性能问题了,可能直接内存溢出了

一般来说insert事务的话,5K-1W来做批措置就可以了(字段不克不及太大)

5,设计表的时候尽量用"小数据类型",好比尽量避免text,blob等这些巨匠伙,优先使用ENUM和SET(小而美,规模有限,百益无一害)

6,设计表字段能用数字类型就千万别用字符类型,好比存IP地址,用int,别用varchar(体例自己百度一下吧)

7,尽量避免null字段,界说时尽量使用 not null.原因是允许null时不便利查询优化,复合索引也会失效,并且如果列有索引时会额外占用空间: a int(10) NOT NULL DEFAULT 0

8,图片等巨匠伙不要存DB,用fastdfs等中间件或者直接使用七牛等云存储都可以弄,也不贵

A,大SQL尽量拆分,多核CPU每个CPU只能执行一个SQL,所以并发时,一堆小的可能效率更高一些,并且容易命中缓存,并且不容易长时间锁表(无论什么锁都是时间越短越好),固然这个要结合实际情况阐发了,一大堆小的万一增加IO承担呢。

B,事务尽可能的小,代码别偷懒,全加到一个transaction中,事理不多说了

C,存储过程,触发器之类的能避就全避免了吧,维护不便利,人员变动时,很多时候就忘了,时间一长全是按时炸弹

D,禁止select *,不消问为啥了,禁止就是禁止!需要啥就取啥是王道

E,update时,where语句尽量要走索引,不然会全表扫描,一般情况下,1G的数据至少10S(想想这可是update啊,锁住10S意味着啥)

F,or尽量不消,改成in(),固然in的规模太多也不可,尽量别超100

G,还是or,如果:select a from A where b=1 or c=1这种where里面不合字段进行or,这种尽量改成union。

select a from A where b=1

union

select a from A where c=1

H,避免 “% 前缀”模糊查询 。因为会致使索引失效,大数据量下是灾难

I,分页时:Select a from A limit 10000,10; 这种大偏移量下效率很是低。可以考虑如下几个方案:

select a from A WHERE id>=xxxx limit 11;(将上一页的最大值通过where id> 进行预措置,然后分页)

select a from A WHERE id >= ( select a from A limit 10000,1 ) limit 10;

select a from A inner join (select a from A limit 10000,10) using (id) ;

J,避免使用count(*),不知道为什么mysql优化这么个工具有那么难么,可是实际上大数量下这个工具真心慢,1000W以上至少几秒,作为替代方案,考虑使用nosql例如redis,memcached存下来,可是要按时校对。还有一个体例,直接做一个表存下来,每次增加或者减少都在这个表做update增减

K,UNION ALL 而非 UNION ,看需要啦,一般不消去重的业务的话去重压力不小,能省则省

L,尽量不消 INSERT SELECT,数据量大有延迟,同步完了可能有毛病

差不多了,真心不肯意写这么多,在头条上读起来也麻烦!

兄弟姐妹们,有啥好体例?评论里支支招!

更多内容回复查看:
游客,如果您要查看本帖隐藏内容请回复
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

12

主题

43

帖子

25

金币

连长

Rank: 7Rank: 7Rank: 7

积分
117
沙发
发表于 2018-11-30 20:58:50 | 只看该作者
除select * 之外,其他基本认同
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

10

主题

39

帖子

23

金币

连长

Rank: 7Rank: 7Rank: 7

积分
111
板凳
发表于 2018-11-30 20:59:25 | 只看该作者
我已经会了,月薪才3000
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

16

主题

46

帖子

34

金币

连长

Rank: 7Rank: 7Rank: 7

积分
123
地板
发表于 2018-11-30 21:00:25 | 只看该作者
好多都不适用,当规划器是死的?
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

15

主题

46

帖子

33

金币

连长

Rank: 7Rank: 7Rank: 7

积分
123

社区QQ达人新兵

5#
发表于 2018-11-30 21:00:38 | 只看该作者
我贮存文本,跨越五百个字节,是不是只能用text
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

6

主题

61

帖子

48

金币

连长

Rank: 7Rank: 7Rank: 7

积分
186

新兵

6#
发表于 2018-11-30 21:01:29 | 只看该作者
or尽量不消,改成in(),固然in的规模太多也不可,尽量别超100  这个说下原因呗
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

11

主题

51

帖子

23

金币

连长

Rank: 7Rank: 7Rank: 7

积分
120
7#
发表于 2018-11-30 21:02:20 | 只看该作者
事物能不克不及再深度剖析下,幻读啥的
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

17

主题

44

帖子

35

金币

连长

Rank: 7Rank: 7Rank: 7

积分
126
8#
发表于 2018-11-30 21:02:57 | 只看该作者
我都弄懂了,下午找老板提工资去!
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

14

主题

43

帖子

30

金币

连长

Rank: 7Rank: 7Rank: 7

积分
126
9#
发表于 2018-11-30 21:03:05 | 只看该作者
希望楼主把sql优化介绍完了,能再介绍一下底层原理就很完美了,先关注一下
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码

18

主题

53

帖子

39

金币

连长

Rank: 7Rank: 7Rank: 7

积分
153
10#
发表于 2018-11-30 21:03:29 | 只看该作者
干货 以后多发点[灵光一闪]
C VC C++ MFC 汇编 函数 脚本 辅助 多开 注入 内存 插件 破解 基址 窗口 大漠 绑定 编程 交流 论坛 实例 源码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VC中文网 - 豫ICP备14012807号|小黑屋|联系客服|金币冲值|VC中文网

GMT+8, 2019-11-20 06:45 , Processed in 0.523437 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表
pk10投注技巧分享