赶集网mysql36条军规_赶集网MySQL的36条军规
写在前面的话:
总是在灾难发生后,才想起容灾的重要性;
总是在吃过亏后,才记得曾经有人提醒过。
(一)核心军规
(1)不在数据库做运算
cpu计算务必移至业务层;
(2)控制单表数据量
int型不超过1000w,含char则不超过500w;
合理分表;
限制单库表数量在300以内;
(3)控制列数量
字段少而精,字段数建议在20以内;
(4)平衡范式与冗余
效率优先;
往往牺牲范式;
(5)拒绝3B
拒绝大sql语句:big sql
拒绝大事物:big transaction
拒绝大批量:big batch
(二)字段类军规
(6)用好数值类型
tinyint(1Byte)
smallint(2Byte)
mediumint(3Byte)
int(4Byte)
bigint(8Byte)
bad case:int(1)/int(11)
(7)字符转化为数字
用int而不是char(15)存储ip
(8)优先使用enum或set
例如:sex enum (‘F’, ‘M’)
(9)避免使用NULL字段
NULL字段很难查询优化;
NULL字段的索引需要额外空间;
NULL字段的复合索引无效;
bad case:
name char(32) default null
age int not null
good case:
age int not null default 0
(10)少用text/blob
varchar的性能会比text高很多;
实在避免不了blob,请拆表;
(11)不在数据库里存图片
这个我不能理解!
但这是赶集网的经验,求detail!
(三)索引类军规
(12)谨慎合理使用索引
改善查询、减慢更新;
索引一定不是越多越好(能不加就不加,要加的一定得加);
覆盖记录条数过多不适合建索引,例如“性别”;
(13)字符字段必须建前缀索引
(14)不在索引做列运算
!!!不只是索引,都不能做列运算吧!!!
bad case:
select id where age +1 = 10;
(15)innodb主键推荐使用自增列;
主键建立聚簇索引;
主键不应该被修改;
字符串不应该做主键;
如果不指定主键,innodb会使用唯一且非空值索引代替;
(16)不用外键
请由程序保证约束;
(四)sql类军规
(17)sql语句尽可能简单
一条sql只能在一个cpu运算;
大语句拆小语句,减少锁时间;
一条大sql可以堵死整个库;
(18)简单的事务
事务时间尽可能短;
bad case:
上传图片事务
(19)避免使用trig/func
触发器、函数不用;
客户端程序取而代之;
(20)不用select *
消耗cpu,io,内存,带宽;
这种程序不具有扩展性;
(21)OR改写为IN()
or的效率是n级别;
in的消息时log(n)级别;
in的个数建议控制在200以内;
select id from t where phone=’159′ or phone=’136′;
=>
select id from t where phone in (’159′, ’136′);
(22)OR改写为UNION
mysql的索引合并很弱智
select id from t where phone = ’159′ or name = ‘john’;
=>
select id from t where phone=’159′
union
select id from t where name=’jonh’
(23)避免负向%
(24)慎用count(*)
(25)同上
(26)limit高效分页
limit越大,效率越低
select id from t limit 10000, 10;
=>
select id from t where id > 10000 limit 10;
(27)使用union all替代union
union有去重开销
(28)少用连接join
(29)使用group by
分组;
自动排序;
(30)请使用同类型比较
(31)使用load data导数据
load data比insert快约20倍;
(32)打散批量更新
(33)新能分析工具
show profile;
mysqlsla;
mysqldumpslow;
explain;
show slow log;
show processlist;
show query_response_time(percona);
赶集网mysql36条军规_赶集网MySQL的36条军规相关推荐
- 小说网jsp源码_基于jsp+mysql的JSP小说网
运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x, ...
- 苹果wifi网速慢怎么办_家里网速慢如何解决 提高WiFi网速方法【详解】
几乎每个人家里都有无线WiFi,无线WiFi信号强弱则成为影响无线WiFi运用体验的重要原因之一.为什么家里无线WiFi网速时快时慢?为什么不一样位置的网速差别大?根据英国<每日邮报>报道 ...
- 实时网速监测app_实时网速安卓下载_实时网速监测安卓app下载-XP软件园
详情介绍 实时网速安卓是一款简单实用的手机网速监测工具,自身的体积只有2m大小,对手机运行的网速数字显示最新网速,掌握目前手机网速情况,需要就来下载实时网速安卓吧. 实时网速安卓介绍 实时网速监测安卓 ...
- mysql合并多条纪录字段_Mysql应用mysql合并多条记录的单个字段去一条记录编辑
<MysqL应用MysqL合并多条记录的单个字段去一条记录编辑>要点: 本文介绍了MysqL应用MysqL合并多条记录的单个字段去一条记录编辑,希望对您有用.如果有疑问,可以联系我们.测试 ...
- python官网支持货到付款吗_官网购买的iPhone12pro还没发货?试着用Python快速入手...
引言 iPhone12pro有望成为2020年末真香机,动辄3000元的溢价让不少消费者选择了等待官网调货.除了官方与电商线上平台,苹果还采用了线下预约制提货.但每天少的可怜的出货量,和不到一秒钟就 ...
- 查一个字段中字符集超过30的列_详细解读MySQL的30条军规
一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省 ...
- mac下载百度网盘文件限速_百度网盘限速怎么办 (20200412 )
关注全新Four网络科技,电脑小技巧全知晓 360网盘关闭后,百度云似乎要成为国内网盘的唯一选择,然而百度云下载速度太慢,显然是被限速了.下面有3个方法用于百度网盘加速下载,演示的下载文件是大于1G的 ...
- 为什么手机网速太慢_手机网速慢怎么回事?一分钟就提速两倍的方法
明明移动网络4G信号满格,但是上网却很慢,手机问题么?很多人认为手机信号满格就说明信号很好,网速理所应该很快.其实呢,不然...... 相同的运营商,相同的4G网络,为什么有的手机网速慢有的快呢?原来 ...
- 网新恒天_点网新角度和点网新React
网新恒天 I was exploring the "dotnet new" experience last week and how you can extend template ...
最新文章
- Jquery知识小点备注
- php 避免xss_PHP防止XSS注入
- 高一计算机专业班主任工作总结,2016学年上学期高一班主任工作总结
- 在表达式 T(n) = 2T(n/2) + O(1) 与 T(1) = O(1) 中,T(n) 的时间复杂度为多少?
- 【matlab安装】手把手图文并茂安装matlab2021(win10版)
- android pickerview 多行,Android-PickerView系列之介绍与使用篇(一)
- 电脑如何安装android系统版本,电脑如何安装Android系统 电脑安装安卓系统教程
- 雅诗兰黛公司宣布晋升Stéphane de La Faverie为集团总裁
- [js]整合google,51ditu和mapbar的地图API [此博文包含图片]
- 斐波那契数列+pyton
- Transformer + RL:是强化学习魔高一尺,还是 Transformer 道高一丈? (1)
- 特征重要性与shap值
- 解释X_train,Y_train,X_test,Y_test分别表示什么
- 仿微信朋友圈动态列表
- 村上春树的《海边的卡夫卡》与中日现实
- Excel如何批量添加同一批注
- Nvidia Jetson AGX Xavier 硬件相关
- Oracle如何用单字段或多字段进行查重
- ImportError: cannot import name ‘_C’ from ‘maskrcnn_benchmark’
- Linux james邮件服务器的搭建