转载&修改:赶集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----------支付宝支付的一些注意事项。该博客只适用于20180209之后,的app支付宝支付。
1.签名方式: 2.设置应用公钥.也就是开发者公钥.
- 如何正确对用户密码进行加密?转自https://blog.csdn.net/zhouyan8603/article/details/80473083
本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式.还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路.相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施 ...
- 安装jar包到本地仓库和远程仓库
转载: https://blog.csdn.net/zengdongwen/article/details/81241198 如何部署到maven中央仓库呢? https://blog.csdn.ne ...
- Python魔法方法详解
魔法方法 含义 基本的魔法方法 __new__(cls[, ...]) 1.__new__是在一个对象实例化的时候所调用的第一个方法 2.它的第一个参数是这个类,其他的参数是用来直接传递给__ ...
- 【SparkStreaming学习之四】 SparkStreaming+kafka管理消费offset
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- liunx驱动----异步通知
查询:消耗资源 中断:read 一直要去读 poll :指定起始时间 异步通知 signal 测试程序 include <stdio.h> include <signal.h> ...
- vue使用v-for时vscode报错 Elements in iteration expect to have 'v-bind:key' directives
vue使用v-for时vscode报错 Elements in iteration expect to have 'v-bind:key' directives Vue 2.2.0+的版本里,当在组件 ...
- 解决 flannel.1 interface state DOWN
ip a 查看结果 flannel.1 i state UNKNOWN 并且五 inet 发现日志 device (flannel.1): state change: unmanaged -> ...
- 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)
https://blog.csdn.net/fuqiuai/article/details/79483057
- Python - 如何统计序列中元素出现的频次
1.用内置的count()方法,该方法返回子字符串在字符串中出现的次数(同样适用于列表)2.用collections模块的Counter类 示例: from collections import Co ...