转载&修改:赶集mysql军规
- 不在数据库做计算,cpu计算务必移至业务层
- 控制单表数据量,单表记录控制在千万级
- 控制列数量,字段数控制在20以内
- 平衡范式与冗余,为提高效率可以牺牲范式设计,冗余数据
- 拒绝3B(big),大sql,大事务,大批量
- 用好数值类型
- 有些字符转化为数字
- 优先使用enum或set
- 避免使用NULL字段
- 不在数据库里存图片
- 谨慎合理使用索引
- 字符字段必须建前缀索引
- 不在索引做列运算
- innodb主键合理使用自增列
- 不用外键,请由程序保证约束
- sql语句尽可能简单
- 简单的事务
- 避免使用触发器,用户自定义函数,请由程序取而代之
- 前导模糊查询不能使用索引
- 避免使用not或!= 使用in替代,如果序列是连续的话使用between
- 区分in和exists, not in和not exists
- 如果明确知道只有一条结果返回,使用limit 1
- 不用select *
- limit高效分页
- 使用union all替代union,union有去重开销
- 尽量不用连接join
- 务必请使用“同类型”进行比较,否则可能全表扫面
- 如果业务大部分是单条查询,使用Hash索引性能更好,例如用户中心
- 打散批量更新
- 使用性能分析工具
- type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别
- key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式
- key_len列,索引长度
- rows列,扫描行数。该值是个预估值
- extra列,详细说明。注意常见的不太友好的值有:Using filesort, Using temporary
转载&修改:赶集mysql军规的更多相关文章
- 赶集mysql军规
总是在灾难发生后,才想起容灾的重要性.总是在吃过亏后,才记得曾经有人提醒过. 一,核心军规 不在数据库做计算,cpu计算务必移至业务层 控制单表数据量,单表记录控制在千万级 控制列数量,字段数控制在2 ...
- MySQL 军规
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...
- 更改(修改)mysql自动增序列改变从1000开始
更改(修改)mysql自动增序列改变从1000开始 ************************************************************************** ...
- linux下(修改|忘记)mysql密码
好尴尬,经常忘记自己的密码 修改的用户都以root为列.一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p p ...
- MySql绿色版安装步骤和方法,以及配置文件修改,Mysql服务器启动
MySql绿色版Windows安装步骤和方法,以及配置文件修改,Mysql服务器启动 支持“标准”Markdown / CommonMark和Github风格的语法,也可变身为代码编辑器: 支持实时预 ...
- mysql 军规 (转载)
导语 来自一线的实战经验 每一条军规背后都是血淋淋教训 不要华丽,只要实用 若有一条让你受益,慰矣 主要针对数据库开发人员 总是在灾难发生后,才想起容灾的重要性 总是在吃过亏后,才记得曾经有人提醒过 ...
- 【转载】在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码
在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码 2018年08月 ...
- [转载]由浅入深探究mysql索引结构原理、性能分析与优化
第一部分:基础知识第二部分:MYISAM和INNODB索引结构1. 简单介绍B-tree B+ tree树 2. MyisAM索引结构 3. Annode索引结构 4. MyisAM索引与InnoDB ...
- ORM规约变更经典案例---mysql军规
先介绍一下<MySQL数据库开发的三十六条军规>,这里只介绍核心的,具体内容大家可以自行百度,这是从底层开发人员到管理者必须知道规范.出自58赶集. 写在前面的话: 总是在灾难发生后,才想 ...
随机推荐
- php----------linux下安装php的swoole扩展
1.首先你已经安装好了php环境,这里就不介绍php环境的安装了.如果你是编译安装记得将php加入环境变量,以便于方便查看扩展是否安装成功. 2.我安装的php环境缺少了要给东西,详细看下图 如果你没 ...
- Linux.ls 查看常用参数
Linux.ls 查看常用参数 在linux中ls查看文件常用参数: -l :详情文件 -h : 格式化文件大小 -r :将查询的结果列表进行翻转 -S :按文件大小进行排列
- 006-CSS引入外部字体
我们制作页面css,设置字体,可能会需要加入一些比较特殊的字体,这时候就需要引入这些字体. 方法如下: @font-face { font-family: KuTang;/*定义字体的名字*/ src ...
- .net连接数据库递归
private void Form1_Load(object sender, EventArgs e) { List<Regions> regions = GetRegions().Whe ...
- NGUI之实现连连看小游戏
一,部分游戏规则如下: 二,代码如下: 1. 游戏逻辑核心代码 using System.Collections.Generic; using UnityEngine; namespace Modul ...
- [NOIP2015普及组]求和
题目 题目描述 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n.每个格子上都染了一种颜色color_i用[1,m]当中的一个整数表示),并且写了一个数字numberi. 定义一种特殊的三元组: ...
- 记录es在虚拟机的开启步骤
最近开始接触elasticserach数据库,于是想在虚拟机上装一个练练手,装的时候可是费了好多时间,百度了许多教程,但是教程太多太乱,怕自己容易忘,所以记录一下,但是我主要记录是装好的es数据库如何 ...
- 【Rice】Cultivar versus Variety
From Cindy Haynes, Department of Horticulture As a horticulturist, it is important that I use the ...
- bzoj2839 集合计数(容斥)
2839: 集合计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 883 Solved: 490[Submit][Status][Discuss] ...
- 使用 Nginx 内置 $http_user_agent 来区分( 电脑 pc、手机 mobile、平板 pad )端的内容访问
location / { #pc端内容访问 set $flag "pc"; set $num 1; set $hua "${http_user_agent}"; ...