写在前面的话:

总是在灾难发生后,才想起容灾的重要性;

总是在吃过亏后,才记得曾经有人提醒过。

(一)核心军规

(1)不在数据库做运算:cpu计算务必移至业务层

(2)控制单表数据量:单表记录控制在1000w

(3)控制列数量:字段数控制在20以内

(4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据

(5)拒绝3B:拒绝大sql,大事物,大批量

(二)字段类军规

(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)不在数据库里存图片:是否需要解释?

(三)索引类军规

(12)谨慎合理使用索引

改善查询、减慢更新

索引一定不是越多越好(能不加就不加,要加的一定得加)

覆盖记录条数过多不适合建索引,例如“性别”

(13)字符字段必须建前缀索引

(14)不在索引做列运算

bad case:

select id where age +1 = 10;

(15)innodb主键推荐使用自增列(SK:博主不认可)

主键建立聚簇索引

主键不应该被修改

字符串不应该做主键

如果不指定主键,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)

==【完】==

赶集网MySQL开发36军规相关推荐

  1. 【转】赶集网mysql开发36军规

    原文链接:https://segmentfault.com/a/1190000004711147 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一) ...

  2. 赶集网mysql36条军规_赶集网MySQL的36条军规

    写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层: (2)控制单表数据量 int型不超过 ...

  3. select分页要调优100倍,说说你的思路? (内含Mysql的36军规)

    背景说明: Mysql调优,是大家日常常见的调优工作.所以Mysql调优是一个非常.非常核心的面试知识点. 在40岁老架构师 尼恩的读者交流群(50+)中,其相关面试题是一个非常.非常高频的交流话题. ...

  4. mysql 36条军规_mysql开发36条军规(转)

    (一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层: (2)控制单表数据量 int型不超过1000w,含char则不超过500w: 合理分表: 限制单库表数量在300以内: (3)控制列 ...

  5. Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智能开发 FoodRecom ...

  6. Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 ShopRec ...

  7. 在线新闻推荐网 Python+Django+Mysql开发技术 基于用户、物品的协同过滤推荐算法 个性化新闻推荐系统 协同过滤推荐算法在新闻网站中的运用 个性化推荐算法、机器学习、分布式大数据、人工智

    在线新闻推荐网 Python+Django+Mysql开发技术 基于用户.物品的协同过滤推荐算法 个性化新闻推荐系统 协同过滤推荐算法在新闻网站中的运用 个性化推荐算法.机器学习.分布式大数据.人工智 ...

  8. 在线图书推荐网 Python+Django+Mysql开发技术 个性化图书推荐系统 协同过滤推荐算法在图书网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智

    在线图书推荐网 Python+Django+Mysql开发技术 个性化图书推荐系统 协同过滤推荐算法在图书网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智 ...

  9. 在线电影推荐网 使用Python+Django+Mysql开发技术 在线电影推荐系统 电影网站推荐系统 基于用户、物品的协同过滤推荐算法 个性化推荐算法开发 机器学习、人工智能、大数据分布式开发

    在线电影推荐网 使用Python+Django+Mysql开发技术 在线电影推荐系统 电影网站推荐系统 基于用户.物品的协同过滤推荐算法 个性化推荐算法开发 机器学习.人工智能.大数据分布式开发 Mo ...

最新文章

  1. springcloud全局过滤_微服务技术SpringCloud 互联网网站架构演变过程
  2. 2.7 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
  3. 如何快速掌握oracle,教你如何快速从 Oracle 官方文档中获取需要的知识
  4. expect() php,Linux expect 的安装
  5. java图形界面重写坐标_重写自由软件和计算机图形的历史
  6. Mysql数据库-Centos和Raspbian主从复制(备份)
  7. html5 websocket插件,html5实现的WebSocket一个小例子(附代码)
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的汽车租赁管理系统
  9. java jdk1.8 jvm_JVM——Java内存模型 (JDK1.8)
  10. namespace用法
  11. 西南交大量子计算机,上海交大“致远学者”本科生突破光量子计算机探测瓶颈问题...
  12. winform通过restsharp调用api接口登录及其它接口
  13. 【遥感专题系列】微波遥感(二、合成孔径雷达SAR基础)
  14. 《老路用得上的商学课1—5》成本
  15. 3d max材质贴图
  16. Java Itext+jfreehart 导入含有图形的word文档
  17. RFX2401C skyworks射频2.4GHZ ZIGBEE/ISM发射/接收RFeIC
  18. 【小5聊】C#一键设置桌面壁纸同时叠加今天工作或备注内容到壁纸上(windows窗体篇)
  19. Java中boolean型变量的默认值问题
  20. 棋牌开发需要注意哪些事项

热门文章

  1. 处理字符串_3_处理含引号的字符串
  2. Visual Studio Code连接SQL SERVER 2019
  3. 在vue中怎么写行内样式高_说说在 Vue.js 中如何绑定样式(class 或 style)
  4. [图解]小白都能看懂的FASTER R-CNN – 原理和实现细节
  5. CNN for Semantic Segmentation(语义分割,论文,代码,数据集,标注工具,blog)
  6. model.parameters(),model.state_dict(),model .load_state_dict()以及torch.load()
  7. 汉文博士 0.5.6 正式版发布
  8. Struts2文件上传的大小限制问题
  9. Java 斐波那契数列
  10. 基于tensorflow的RNN自然语言建模