收藏 分享(赏)

Mysq的使用教程 开发规范.doc

上传人:魏子好的一塌糊涂的文献 文档编号:1127955 上传时间:2019-11-22 格式:DOC 页数:6 大小:24KB
下载 相关 举报
Mysq的使用教程 开发规范.doc_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

2、限一下操作系统限制,库名尽量少于8个字符。以便跨数据库版本迁移,比如mysql迁移db2,oracle等库名、表名、字段名禁止使用MySQL保留字比如:字段常见 value 等关键字出现临时库、表名必须以tmp为前缀,并以日期为后缀,比如:tmp_order_yyyymmdd备份库、表必须以bak为前缀,并以日期为后缀 ,比如:t_order_bak_yyyymmdd基础规范使用INNODB存储引擎说明:mysql 官方版本已经设置表字符集使用UTF8,建议使用utf8mb4所有表都需要添加注释说明:增强可维护性,以及数据仓库、大数据项目等二次采集时数据调研的容易程度单表数据量建议控制在500

3、0W以内说明:受限部署机器的内存,迁移数据的网络限制,对低端硬件设备(1000iops);表应设置在1000w以内不在数据库中存储图片、文件等大数据说明:核心库考虑高并发,高性能,以及有效使用内存等原因,大字段不具备内存缓存,以及插入数据时,删除数据导致聚簇索引行迁移。禁止在线上做数据库压力测试禁止从测试、开发环境直连数据库说明:考虑实际阶段调整,直联容易出现,误修改数据,update不提交hold住事务,锁等待,以及核心数据丢书;物理上也开放端口给入侵留了安全隐患;以及员工变更的用户敏感数据外泄。库表设计拆分大字段和访问频率低的字段,分离冷热数据按日期时间分表需符合YYYYMMDDHH格式采

4、用合适的分库分表策略。比如:用户维度,商户代理商维度,具体取决于服务对象是用户还是多种聚合字段设计尽可能不使用TEXT、BLOB类型用DECIMAL代替FLOAT和DOUBLE存储精确浮点数将字符转化为数字使用TINYINT来代替ENUM类型所有索引字段均定义为NOT NULL使用UNSIGNED存储非负整数INT类型固定占用4字节存储使用timestamp存储时间使用INT UNSIGNED存储IPV4使用VARBINARY存储大小写敏感的变长字符串禁止在数据库中存储明文密码,身份证号,卡号 等(数据安全角度考虑)索引规范索引的用途说明:快速查询、去重、加速定位、避免排序;评价索引又按三星来

5、评定:有序索引避免排序、匹配查询、索引覆盖覆盖索引索引数量控制建议超过千万记录的索引不使用uuid,aes,md5等宽字段主键索引;性能下降很快建议索引大小不超过表的1/3建议单张表中索引数量不超过5个建议单个索引中的字段数不超过5个建议查询高频率,高区分的字段建立非唯一索引。如:性别,状态不是建立索引,可选择性不高对字符串使用前缀索引,前缀索引长度不超过8个字符建议优先考虑前缀索引,必要时可添加伪列并建立索引主键准则 表必须有主键 不使用更新频繁的列 尽量不选择字符串列 建议不使用UUID MD5 HASH(),全局唯一 默认使用非空的唯一键 建议选择全局自增或发号器,避免分库分表、复制同步

6、合并记录,流水号全局冲突(自增字段只能保值本地单调递增;)重要的SQL必须被索引UPDATE、DELETE语句的WHERE条件列ORDER BY、GROUP BY、DISTINCT的字段多表JOIN的字段区分度最大的字段放在前面核 SQL优先考虑覆盖索引避免冗余和重复索引考虑查询和更新比例索引禁忌不在低基数列上建立索引,例如“性别”不在索引列进行数学运算和函数运算尽量不使用外键外键用来保护参照完整性,可在业务端实现对父表和子表的操作会相互影响,降低可用性不使用%前导的查询,如like “%ab”不使用 is null 索引不使用负向查询,如not in/like,is not null无法使用

7、索引,导致全表扫描全表扫描导致buffer pool利用率降低SQL设计使用预编译语句只传参数,比传递SQL语句更高效避免隐式转换 会导致索引失效 充分利用前缀索引 必须是最左前缀建议不使用select * 消耗CPU和IO、消耗网络带宽、无法使用覆盖索引避免使用复杂计算、存储过程、触发器、UDF、events,JSON等;tomcat,jboss等无状态更易scale out,数据库扩展难度相对较大限制分页展示的页数,offset 设置,限制分页取值范围(限制分页在100页,2000条记录内)只能点击上一页、下一页根据业务合理平衡范式与反范式、少与500万的非高频表可以使用反范式、冗余字段可

8、以一次查询,高频高并发的表应遵循范式提升性能避免使用大表的JOIN,禁止3个表以上的join;关联字段数据类型应一致无索引字段,采用主键、唯一键索引查询延迟关联避免使用大事务,减少锁等待,并发执行时序导致的死锁、禁止使用QUERY CACHE,该功能弊大于利,MySQL8.0 query cache 功能被移除使用in代替or,in的值不超过256个禁止使用order by rand()用union all而不是union,避免排序禁止单条SQL语句同时更新多个表热表减少表结构变更,以免带来瞬间锁、的影响行为规范禁止使用binlog_format使用 statement,早期Mysql RC级

9、别复制出行主从不一致,现Mysql已经禁用RC级别设置statement备库设置read_only只读状态升级数据库版与DBA联合参与测试,性能变化;底层存储数据类型变更、原有业务SQL执行计划变更。比如类型隐式转化,ICP下推。批量导入、导出数据必须提前通知DBA协助观察禁止在线上从库执行后台管理和统计类查询禁止有super权限的应用程序账号存在产品出现非数据库导致的故障时及时通知DBA协助排查推广活动或上线新功能必须提前通知DBA进行流量评估数据库数据丢失,及时联系DBA进行恢复对单表的多次alter操作必须合并为一次操作不在MySQL数据库中存放业务逻辑重大项目的数据库方案选型和设计必须提前通知DBA参与对特别重要的库表,提前与DBA沟通确定维护和备份优先级不在业务高峰期批量更新、查询数据库不在数据库上物理删除数据,建议增加删除标识,分批执行提交线上建表改表需求,必须详细注明所有相关SQL语句

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 资格考试

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报