mysql浅龟定
一,尽量不字啊数据库做运算
1,尽量不再数据库做运算,
2,将复杂运算移动到cpu
3,尽可能简单应用mysql
二,控制表数据量
1,纯 int不超过1000w
2,含char不超过500w
3,建议单裤不超过300-400个表
三,保持表的苗条身材
1,表的字段数少而精
2,单表字段数上限在20~50个
四,平衡范式和冗余
1,效率优先,提升性能
2,没有绝对的对与错
3,适当牺牲范式,加入冗余
五,拒绝3B
1,大SQL
2,大事务
3,大批量
六,字段设置龟定
1,将字符转化为数字(更高效,查询快,占空间更小)
2,优先使用enum或set(值已知或有限,如 性别)
3,避免使用NULL字段(很难优化查询,加索引需要额外空间,含NULL复合索引无效)
4,尽量不使用text/blob(必须使用时拆分到单独的表)
5,不再数据库存图片
七,索引浅龟定
1,谨慎添加索引
2,最好不超过字段数20%
3,字段前加前缀
4,不在索引列做运算
八,主键设置
1,二级索引存储主键值2,主键不应更新或者修改3,按自增顺序插入值4,忌用字符串做主键5,若不指定主键,innoDB会使用唯一且非空值索引代替
九,事务,触发器,or,limit浅龟定1,事务/连接使用原则:即开即用,用完即关
2,与事务无关的操作放到事务外面,减少锁资源的占用
3,不破坏一致性的前提下,使用多个短事务代替长事务4,尽可能少用存储过程
5,尽可能少使用触发器6,减少使用mysql函数对结果进行处理(由客户端程序负责)
7,尽量不适用select *,只取需要的数据列
8,改or为in()【or效率 O(n),in效率O(log n)】控制in的数量,建议小于2009,改or为union
10,减少使用count(*)
11,limit(偏移量越大则越慢)
select id,col1,col2 from test limit 1999999,10;
替换为:
select id,col1,col2 from test where id>1999999 limit 10;
杂项浅龟定:
1,适当分解连接保证高效并发
2,永远不再程序端显式加锁【外部锁对数据库不可控,高并发是时灾难】
3,统一字符集为utf-8
4,统一命名规范【库表名统一小写,索引名称默认为"idx_字段名",库名用缩写】
mysql浅龟定的更多相关文章
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- MySQL浅谈 LEFT JOIN
On条件(在“A left join b on conditional_expr”)决定如何从table B 中检索数据行(Matching-State); 如果B中没有行匹配On 条件,额外的B的所 ...
- sql server 与 mysql在自定以数据类型的区别
sql server 中可以使用 create TYPE postal_code FORM varchar(6) not null; 用于限定邮编的数据位数,他基于varchar数据类型 注意: ...
- mysql浅谈--事务ACID特性
mysql MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管 ...
- mysql简单建表
MySQL 字段约束 null,not null,default,auto_increment [来源于] 没有规矩,不成方圆,任何事物都是如此.在MySQL中,每个字段定义都包含附加约束或者修饰符, ...
- 关于MySQL的安装使用心得
MySQL浅浅地学习了几天,当然还是转到正轨Java上来了,昨天打了一串代码,测试注解来着,结果MySQL挂了~~~ 如何干净卸载MySQL帖子有很多,不再赘述,注册表是个好东西~~ 卸载了Mysql ...
- MYSQL索引结构原理、性能分析与优化
[转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...
- MySql UDF 调用外部程序和系统命令
1.mysql利用mysqludf的一个mysql插件可以实现调用外部程序和系统命令 下载lib_mysqludf_sys程序:https://github.com/mysqludf/lib_mysq ...
- centos7下 安装mysql
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-rele ...
随机推荐
- 简单两步快速学会使用Mybatis-Generator自动生成entity实体、dao接口和简单mapper映射(用mysql和oracle举例)
前言: mybatis-generator是根据配置文件中我们配置的数据库连接参数自动连接到数据库并根据对应的数据库表自动的生成与之对应mapper映射(比如增删改查,选择性增删改查等等简单语句)文件 ...
- Azure经典门户创建VM,如何设置使用静态IP地址?
使用 Azure 经典管理门户中创建的虚拟机,无法使用静态IP 地址,在管理界面没有该设置.在新的管理门户中虽然有使用静态IP的设置,但是选项是灰色,无法修改,提示错误:This virtual ma ...
- IntelliJ IDEA提示:Error during artifact deployment. See server log for details.
IntelliJ IDEA-2017.1.1 tomcat-8.5.13 问题:在IntelliJ IDEA中使用tomcat部署web app时,提示:Error during artifact ...
- Hibernate 案例
搭建一个Hibernate环境,开发步骤: 1. 下载源码 版本:hibernate-distribution-3.6.0.Final 2. 引入jar文件 hibernate3.j ...
- android studio IDE 下,设置ACTIVITY全屏
因为ANDROID STUDIO的JAVA类是继承AppCompatActivity的 ,所以常规的全屏设置并不管用.如果要设置全屏,请参照如下代码/ 1/首先,打开AndroidManifest.x ...
- 【Python3之socket编程】
一.socket的定义 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后 ...
- memcached可视化客户端工具
TreeNMS是一款redis,Memcache可视化客户端工具,采用JAVA开发,实现基于WEB方式对Redis, Memcached数据库进行管理.维护. 功能包括:NoSQL数据库的展示,库表的 ...
- jquery里的attr()方法和prop()方法的区别
在jq的高版本里出现了prop()方法,那么attr()和prop()的区别在哪呢?这两者分别在什么情况用呢? 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们 ...
- JS面向对象一
面向对象分为三大类 封装,继承,多态! 封装就是在一个函数方法中嵌套另外一个函数方法,外层函数方法返回内层函数方法里面的结果,其中内层函数要调用外层函数定义的局部变量 每个函数方法就是一个局部作用域, ...
- workerman启动失败解决
提示stream_socket_server(): unable to connect to tcp://0.0.0.0:2120 (Address already in use)php xxx.ph ...