1. 命名
    a) 有意义。
    b) 数据库、表,都用小写,仅使用下划线和小写字母。
    c) 索引以idx_开头。
    d) 命名不要过长,尽量少于25个字符。
    e) 不要使用保留字。
    f) 字段类型、命名的一致性,相同字段在不同表要相同类型、相同长度、相同命名。
    g) 备份表,时间后缀。
2. 索引
    a) 联合索引,字段数量不超过5个。
    b) 单表索引个数,不超过5个。
    c) 唯一键和主键不要重复。
    d) 创建索引时要注意字段顺序。
    e) order by/group by用到的字段,放到联合索引的后面。
    f) 根据explain工具,调整sql,使之合理使用索引,尽量不出现Using filesoft、Using Temporary。
    g) 过长的varchar,可增加一个散列字段,为散列字段建立索引。较简单的可使用md5。
    h) 范围条件放到复合索引的最后。
3. 表设计
    a) 建议全部选择InnoDB引擎。
    b) 每个表都应有主键。
    c) 尽量将字段设置成Not null,null值的存储需要额外的空间,且会导致比较运算更为复杂。
    d) 使用更短小的列,比如短整型,整型列的执行速度往往更快。
    e) 将大字段、不频繁使用的字段分离到另外的表,表越小,执行越快。或者将频繁更新的表分离到其他表,因为频繁更新会导致缓存的结果集失效,可能影响性能。注:若分离后需要经常进行表连接,就得不偿失了,Mysql连接表时性能差,或者可以考虑使用程序进行连接。
    f) 精确符点数,使用decimal,不要使用float/double,会不准确。
    g) 整型定义,不要定义显示长度。
    h) 建议不要使用enum类型。
    i) 尽可能不要使用text/blob类型。
    j) varchar(n),n表示的是字符数,不是字节数,如varchar(255),存储汉字,最多可以存255个。n应尽可能的小,进行排序和创建临时表时,会使用n的长度申请内存,这一点在5.7后才有改进。varchar字段的最大长度为65535个字节 。
    k) 字符集,选择utf8。
    l) 存储日期,使用date;存储时间建议使用tmestamp,timestamp是4字节,datetime是8字节。
    m) 不要在数据库中存储文件。
4. sql语句
    a) 不要select *
    b) 传参时使用占位符方式,提高性能并且防范sql注入攻击。
    c) 分割大操作。
    d) in 子句包含的值不应过多,建议少于100。
    e) insert 显示指明字段名称,批量时,每次个数不宜过多。
    f) 避免在sql语句中进行数学运算或函数运算,避免将业务逻辑和数据存储耦合。
    g) 避免使用存储过程、触发器、函数等,这些特性会将业务逻辑与数据耦合在一起,并且mysql的这些特性可能会存在一些bug。
    h) 表连接会降低性能,所以能不连就不连,能少连就少连。
    i) 使用合理的SQL减少,与数据库交互,但这一点要权衡,将一个复杂的、耗费巨大的SQL拆成多个简单的SQL,虽然会使数据库交互增加,但对性能是有增无减的。
5. sql脚本
    去除特殊符号,如^M,文件转为Linux格式,且使用utf8无BOM格式。
6. 数据量
    a) 若优化的足好,单表达上亿数据量也无问题,但这是理想情况。实际情况,单表数据量控制在5000万以下,甚至,最好在1000万以下。若数据量过大,则拆分成多个表,分表要使用应用层分表,最好不要使用mysql的分表特性,可能存在bug。
    b) 开发某个功能之前,应对数据存储进行估算,若数据量较大,提前考虑优化。

mysql 研发规范的更多相关文章

  1. [转载] 根据多年经验整理的《互联网MySQL开发规范》

    原文: http://weibo.com/p/2304181380b3f180102vsg5 根据多年经验整理的<互联网MySQL开发规范> 写在前面:无规矩不成方圆.对于刚加入互联网的朋 ...

  2. 7-MySQL DBA笔记-研发规范

    第7章 研发规范 本章将为读者解读一份研发规范.为了更好地协同工作和确保所开发的应用尽可能的稳定.高效,建立一套数据库相关的研发规范是很有必要的,虽然研发规范的确立和推广是一项很耗时的工作,但所取得的 ...

  3. [转发] 老叶观点:MySQL开发规范之我见

    原文: http://imysql.com/2015/07/23/something-important-about-mysql-design-reference.shtml 老叶观点:MySQL开发 ...

  4. MySQL 数据库规范--调优篇(终结篇)

    前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...

  5. 从MySQL开发规范处看创业

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...

  6. MySQL数据库规范

    Mysql数据库规范 一.基础规范 [强制]使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,并发性能更好,CPU及内存缓存页优化使得资源利用率更高[强制] ...

  7. 建议收藏 - 专业的MySQL开发规范

    为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...

  8. mysql 数据库 规范

    目录 mysql 数据库 规范 基础规范 命名规范 表设计规范 字段设计规范 索引设计规范 SQL编写规范 行为规范 mysql 数据库 规范 基础规范 必须使用InnoDB存储引擎 解读:支持事务. ...

  9. 阿里:MySQL数据库规范

    阿里:MySQL数据库规范 简介:基于阿里数据库设计规范扩展而来 设计规范 1.[推荐]字段允许适当冗余,以提高查询性能,但必须考虑数据一致.冗余字段应遵循: 不是频繁修改的字段. 不是 varcha ...

随机推荐

  1. [GO]数组指针做函数参数

    package main import "fmt" //p指向实现数组a,它是指向数组,它是数组指针//*p指向指针指向的内存,就是实参a func modify1(p *[]in ...

  2. URAL 1133 Fibonacci Sequence(数论)

    题目链接 题意 :给你第 i 项的值fi,第 j 项的值是 fj 让你求第n项的值,这个数列满足斐波那契的性质,每一项的值是前两项的值得和. 思路 :知道了第 i 项第j项,而且还知道了每个数的范围, ...

  3. 编译boost,去掉不使用的组件

    说明:下面内容仅针对Linux环境(boost官网为:http://www.boost.org/,可从这里下载它的源代码包,这里要求下载.tar.gz包,而非.7z..zip或bz2包). 在当前目录 ...

  4. ArcGIS Engine 中对栅格数据的波段信息统计 (转)

    先打开栅格文件所在的工作空间(文件),然后获取其所有的波段,访问每一个波段有时候波段中已经有直方图或统计信息,有时候没有这些信息,可以使用ComputeStatsAndHist()函数对其进行计算(数 ...

  5. ApplicationContex是干啥的

    ApplicationContext就是一个百宝箱 ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,Applic ...

  6. ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结

    20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  7. Sqoop 遇到的问题

    1.   想用 sqoop 增量的方式导入到 hive.运行下面的命令: sqoop import --connect jdbc:mysql://192.168.7.159:3306/test --u ...

  8. 洛谷P2761 软件补丁问题(状压dp)

    传送门 啊咧……这题不是网络流二十四题么……为啥是个状压dp…… 把每一个漏洞看成一个状态,直接硬上状压dp 然后因为有后效型,得用spfa //minamoto #include<iostre ...

  9. C#/ASP.NET对URL中的中文乱码处理

    前言:UTF-8中,一个汉字对应三个字节,GB2312中一个汉字占用两个字节. 不论何种编码,字母数字都不编码,特殊符号编码后占用一个字节. 1.直接在C#后台编码URL参数 引用类库:System. ...

  10. Flume自定义拦截器(Interceptors)或自带拦截器时的一些经验技巧总结(图文详解)

    不多说,直接上干货! 一.自定义拦截器类型必须是:类全名$内部类名,其实就是内部类名称 如:zhouls.bigdata.MySearchAndReplaceInterceptor$Builder 二 ...