前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据库开发的 36 条军规!

MySQL数据库开发的 36 条军规!

作者头像
Java技术栈
发布2018-07-31 10:33:00
2.3K0
发布2018-07-31 10:33:00
举报
文章被收录于专栏:Java技术栈

来自:www.slideshare.net/mysqlops/mysql-9838563

来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。文末是详细的视频讲解和PDF下载。

核心军规

  1. 尽量不在数据库做运算
  2. 控制单表数据量 纯INT不超过10M条,含Char不超过5M条
  3. 保持表身段苗条
  4. 平衡范式和冗余
  5. 拒绝大SQL,复杂事务,大批量任务

字段类军规

  1. 用好数值字段,尽量简化字段位数
  2. 把字符转化为数字
  3. 优先使用Enum或Set
  4. 避免使用Null字段
  5. 少用并拆封Text/Blob
  6. 不在数据库中存图片

索引类军规

  1. 谨慎合理添加索引
  2. 字符字段必须建立前缀索引?
  3. 不在索引列做运算
  4. 自增列或全局ID做InnoDB主键
  5. 尽量不用外键

SQL类军规

  1. SQL尽可能简单
  2. 保持事务连接短小
  3. 尽可能避免使用SP/Trigger/Function
  4. 尽量不用Select *
  5. 改写Or为IN()
  6. 改写Or为Union
  7. 避免负向查询和%前缀模糊查询
  8. Count不要使用在可Null的字段上面
  9. 减少Count(*)
  10. Limit高效分页,SELECT * FROM message WHERE id > 9527 (or sub select) limit 10
  11. 使用Union ALL 而不用Union
  12. 分解链接,保证高并发
  13. Group By 去除排序
  14. 同数据类型的列值比较
  15. Load Data导入数据,比Insert快20倍
  16. 打散大批量更新,尽量凌晨操作

约定类军规

  1. 隔离线上线下
  2. 禁止未经DBA认证的子查询
  3. 永远不在程序段显式加锁
  4. 表字符集统一使用UTF8MB4

往期干货推荐

1. Java 10 实战第 1 篇:局部变量类型推断

2. 图解 https 单向认证和双向认证

3. 最新后端架构师技术图谱!附学习资料~

4. Spring Boot 集成 Mybatis 实现双数据源

5. Java 中的伪共享详解及解决方案

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档