赶集网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);

时间: 2024-08-27 03:43:48

赶集网mysql开发36条军规的相关文章

【MySql】赶集网mysql开发36条军规

[MySql]赶集网mysql开发36条军规 2012-05-14 14:02:33 分类: Linux 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层: (2)控制单表数据量 int型不超过1000w,含char则不超过500w: 合理分表: 限制单库表数量在300以内: (3)控制列数量 字段少而精,字段数建议在20以内: (4)平衡范式与冗余 效率优先: 往往牺牲范式: (5)

MySQL开发36条军规

转载地址:http://blog.itpub.net/22664653/viewspace-723506/ 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层: (2)控制单表数据量 int型不超过1000w,含char则不超过500w: 合理分表: 限制单库表数量在300以内: (3)控制列数量 字段少而精,字段数建议在20以内: (4)平衡范式与冗余 效率优先: 往往牺牲范式: (5

星瀚资本杨歌:我七次创业失败的内心感悟(比较真实,可以看看创业的36条军规)

猎云网注:杨歌,星瀚资本创始合伙人.作为一名连续创业者,参与创办了东信康达红外数字医疗及凯业网等,曾担任北国投投资总监.大江投资副总裁.毕马威咨询师.投资的案例包括口碑街.言几又.人人财务.V.Fine等.拥有清华大学工学硕士与学士学位.他分享了创业失败的感悟.本文来自投资人说(ID:touzirenshuo),转载请注明来源. 1.年轻人要大胆地去犯错 谢谢大家今天能来到投资人说听我分享,我是星瀚资本的创始合伙人杨歌. 提到硅谷大家都感觉很高大上,的确,硅谷的外表看上去很光鲜,但其实在硅谷的大

用尽洪荒之力整理的Mysql数据库32条军规

今天上午吐血整理了Oracle SQL性能优化的40条军规,其中很多规则也是适用于Mysql的,结果今晚发现这一篇文章——用尽洪荒之力整理的Mysql数据库32条军规,和我的竟有异曲同工之妙,当然不同的是这是由具有12年Java开发经验的老鸟写的,其见解和认识肯定比我的更加深刻,感谢前辈,现全文转载如下: --------------------------------------------------------------split line------------------------

创业的36条军规

[创业军规1]创业者,人生之大事也,不可轻启.创业是带着一群未知的人去一个未知的地方干一件未知的事儿,九死一生,如果没有做好破釜沉舟的决心,最好不要启程. [创业军规2]只有20%的人适合创业,适合创业的人之中只有5%的人适合当总经理.敢于创业并且敢于让比自己更适合的人当总经理的创业者成功机会更大.作为创业团队的成员,周恩来与毛泽东作用同样伟大. [创业军规3]创业的机会成本非常大.大凡想创业的的人,都是同辈中的佼佼者,把创业的热情和心思用在好好打工上,很可能会飞速升官发财,选择创业,进入的是一

开发婚恋交友类网站的13条军规

现在在线婚恋交友行业成了社会最大的经济来源之一.几乎零成本就能赚到钱,当然了,这个"零"比你想象的要多一点点--你需要为今后的工作搭建一个完美的网站. 你可能会想什么才是完美的网站呢?现在我就来为您详解这类网站最有价值的构成要素,还会为您精确解读开发过程中的每个阶段,所以请不要错过这篇文章的任何一个字! 如何创造一个优秀的婚恋网站 1.做一个竞争调查 在每一片商业红海竞争都极其惨烈,这早已不是秘密.在你开始做你的产品之前,你最后应该先去调查一下已经存在的站点.看一看最成功的一个,同时也

运维的85条军规

“前车之鉴,后事之师”,对于IT运维工程师来说,了解行业的规则,并能将其牢记于心,必将对你的工作起到事半功倍的效果,下面一起来学习下所谓的<运维85条军规>: 1) 承载能力优先 ——随后再进行优化 —— 不遵守这条规则必定带来故障停机时间.不要在故障停机时间的压力下进行优化——要先集中精力提高承载能力. 2) 以Postgres为例,一定要确保你的每一个网络都能匹配得上你的WAL文件.Slony复制.快照技术以及基于磁盘的DB版本化(快照的衍生品) 3) 不要把问题‘优化’到你的架构之中.为

#4【转】Google推荐的15条军规:HTML5代码规范

这篇文章是转载的,很久之前收录在电脑里面的.  忘记是哪里搞来的了,大家知道是转载的就好了... 这里的图片要点击打开才能看到,因为复制过来的,图片有点问题...因此想要图片的辛苦了... Google推荐的15条军规:HTML5代码规范 1.协议头: 建议在指向图片或其他媒体文件.样式表和脚本的URL地址中省略HTTP:协议部分,除非已知相应文件不能同时兼容2个协议. 2.缩进:每次缩进使用双空格 不要使用tab制表符或制表符加空格的混合方式缩进 3.大小写:只使用小写 所有的代码都应是小写的

Android开发60条技术经验总结

Android开发60条技术经验总结,以下是全文: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架 LiteOrm 库,超级清晰且重心可以放在业务上不用关心数据库细节. 3. 全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中. 4. 不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意