Mysq的使用教程 开发规范

Mysq的使用教程 开发规范

ID:46228485

大小:24.00 KB

页数:6页

时间:2019-11-21

Mysq的使用教程 开发规范_第1页
Mysq的使用教程 开发规范_第2页
Mysq的使用教程 开发规范_第3页
Mysq的使用教程 开发规范_第4页
Mysq的使用教程 开发规范_第5页
资源描述:

《Mysq的使用教程 开发规范》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MySQL开发规范说明:数据库本身功能点很多,硬性限制上限比较高,比如单表大小,记录条数,多表join关联个数。我们人为的加一些规范予以限制,是基于当前的并发度、响应时长、网络速度、硬件资源、备份时长、是否易于维护管理、便捷扩容、兼顾敏捷开发等诸多因素做的一个平衡选择。比如索引个数限制(考虑记录更新需要更新索引,而这又涉及到单次数TPS带来的多次IOPS,影响磁盘使用率,磁盘满符合使用增加了吞吐量但又带来排队深度增加,总响应时长增长。命名规范库名、表名、字段名必须使用小写字母,并采用下划线分割库名、表名、字段名禁止超过32个字符。命名应与意义相符:比如k1,

2、k2,k3这种无意义字段应该避免。受限一下操作系统限制,库名尽量少于8个字符。以便跨数据库版本迁移,比如mysql迁移db2,oracle等库名、表名、字段名禁止使用MySQL保留字比如:字段常见value等关键字出现临时库、表名必须以tmp为前缀,并以日期为后缀,比如:tmp_order_yyyymmdd备份库、表必须以bak为前缀,并以日期为后缀,比如:t_order_bak_yyyymmdd基础规范使用INNODB存储引擎说明:mysql官方版本已经设置表字符集使用UTF8,建议使用utf8mb4所有表都需要添加注释说明:增强可维护性,以及数据仓库、大

3、数据项目等二次采集时数据调研的容易程度单表数据量建议控制在5000W以内说明:受限部署机器的内存,迁移数据的网络限制,对低端硬件设备(1000iops);表应设置在1000w以内不在数据库中存储图片、文件等大数据说明:核心库考虑高并发,高性能,以及有效使用内存等原因,大字段不具备内存缓存,以及插入数据时,删除数据导致聚簇索引行迁移。禁止在线上做数据库压力测试禁止从测试、开发环境直连数据库说明:考虑实际阶段调整,直联容易出现,误修改数据,update不提交hold住事务,锁等待,以及核心数据丢书;物理上也开放端口给入侵留了安全隐患;以及员工变更的用户敏感数据外

4、泄。库表设计拆分大字段和访问频率低的字段,分离冷热数据按日期时间分表需符合YYYY[MM][DD][HH]格式采用合适的分库分表策略。比如:用户维度,商户代理商维度,具体取决于服务对象是用户还是多种聚合字段设计尽可能不使用TEXT、BLOB类型用DECIMAL代替FLOAT和DOUBLE存储精确浮点数将字符转化为数字使用TINYINT来代替ENUM类型所有索引字段均定义为NOTNULL使⽤用UNSIGNED存储⾮非负整数INT类型固定占⽤用4字节存储使用timestamp存储时间使用INTUNSIGNED存储IPV4使用VARBINARY存储⼤大⼩小写敏感的

5、变⻓长字符串禁止在数据库中存储明文密码,身份证号,卡号等(数据安全角度考虑)索引规范索引的用途说明:快速查询、去重、加速定位、避免排序;评价索引又按三星来评定:有序索引避免排序、匹配查询、索引覆盖覆盖索引索引数量控制建议超过千万记录的索引不使用uuid,aes,md5等宽字段主键索引;性能下降很快建议索引大小不超过表的1/3建议单张表中索引数量不超过5个建议单个索引中的字段数不超过5个建议查询高频率,高区分的字段建立非唯一索引。如:性别,状态不是建立索引,可选择性不高对字符串使⽤用前缀索引,前缀索引长度不超过8个字符建议优先考虑前缀索引,必要时可添加伪列并建

6、立索引主键准则表必须有主键不使用更新频繁的列尽量不选择字符串列建议不使用UUIDMD5HASH(),全局唯一默认使用非空的唯一键建议选择全局自增或发号器,避免分库分表、复制同步合并记录,流水号全局冲突(自增字段只能保值本地单调递增;)重要的SQL必须被索引UPDATE、DELETE语句的WHERE条件列ORDERBY、GROUPBY、DISTINCT的字段多表JOIN的字段区分度最⼤大的字段放在前⾯面核⼼SQL优先考虑覆盖索引避免冗余和重复索引考虑查询和更新比例索引禁忌不在低基数列上建立索引,例如“性别”不在索引列进行数学运算和函数运算尽量不使用外键外键用来

7、保护参照完整性,可在业务端实现对⽗父表和子表的操作会相互影响,降低可⽤用性不使用%前导的查询,如like“%ab”不使用isnull索引不使用负向查询,如notin/like,isnotnull无法使用索引,导致全表扫描全表扫描导致bufferpool利用率降低SQL设计使用预编译语句只传参数,比传递SQL语句更高效避免隐式转换会导致索引失效充分利用前缀索引必须是最左前缀建议不使用select*消耗CPU和IO、消耗网络带宽、无法使用覆盖索引避免使⽤用复杂计算、存储过程、触发器、UDF、events,JSON等;tomcat,jboss等无状态更易scale

8、out,数据库扩展难度相对较大限制分页展示的页数,o

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。