MySQL数据库开发的三十六条军规

TestWhite 2018年5月10日08:35:12
评论
705字阅读2分21秒
云小站

本文为系列文章,主要介绍36条来自一线的MySQL数据库开发实战经验,每一条经验背后都是血淋林的教训,若有一条让你有所受益,本文的目的就达到了。

本文将36条军规做了如下分类:

一.核心军规(5)

二.字段类军规(6)

三.索引类军规(5)

四.SQL类军规(15)

五.约定类军规(5)

为了避免收藏不看,让大家更有耐心看下去,印象更深刻些,小编将按以上分类分5次分别发布这些内容,本文是其中的第1篇,首先介绍核心军规:

1、尽量不在数据库做运算

• 别让脚趾头想事情

• 那是脑瓜子的职责

MySQL数据库开发的三十六条军规

• 让数据库多做她擅长的事:

  1. √ 尽量不在数据库做运算

  2. √ 复杂运算移到程序端CPU

  3. √ 尽可能简单应用MySQL

• 反例: md5() / Order by Rand()

2、控制单表数据量

• 一年内的单表数据量预估

  1. √ 纯INT不超1000W

  2. √ 含CHAR不超500W

MySQL数据库开发的三十六条军规

• 合理分表不超载,可以按以下字段

  1. USERID

  2. DATE

  3. AREA

….

 建议单库不超过300-400个表

3、保持表身段苗条

• 表字段数少而精,好处如下

  1. √ IO高效

  2. √全表遍历

  3. √表修复快

  4. √提高幵发

  5. √alter table快

• 单表多少字段合适?见下文

• 单表1G体积 500W行评估

  1. √ 顺序读1G文件需N秒

  2. √ 单行不超过200Byte

  3. √ 单表不超50个纯INT字段

  4. √ 单表不超20个CHAR(10)字段

 单表字段数上限控制在20~50个

平衡范式不冗余

MySQL数据库开发的三十六条军规

• 平衡是门艺术

  1. √ 严格遵循三大范式?

  2. √ 效率优先、提升性能

  3. √ 没有绝对的对不错

  4. √ 适当时牺牲范式、加入冗余

  5. √ 但会增加代码复杂度拒绝3B

MySQL数据库开发的三十六条军规

• 数据库幵发像城市交通

  1. √ 非线性增长

• 拒绝3B

详细解析见后续文章

核心军规小结

• 尽量不在数据库做运算

• 控制单表数据量

• 保持表身段苗条

• 平衡范式不冗余

• 拒绝3B

 

  • 我们QQ群
  • QQ扫一扫
  • weinxin
  • 微信公众号
  • 公众号扫一扫
  • weinxin
TestWhite
  • 本文由 发表于 2018年5月10日08:35:12
  • 请您在转载时请务必保留本文链接:https://www.playezu.com/12410.html
扩散!宝塔曝严重漏洞... 新闻资讯

扩散!宝塔曝严重漏洞…

宝塔 Linux 面板是提升运维效率的服务器管理软件,支持一键 LAMP / LNMP /集群/监控/网站/ FTP /数据库/ JAVA 等100多项服务器管理功能。  昨晚8点 宝塔发布官方...
测试数据不会造?可以用这个工具 经验总结

测试数据不会造?可以用这个工具

在测试过程中,大家应该都遇到过各种各样的数据构造问题。e.g. 构造一批通讯录、构造一批用户三要素(姓名手机号身份证)、构造一批银行卡数据…… 这时候,测试数据大多数可能是这样的: 张三,...
Docker安装 Fiora及使用 技能笔记

Docker安装 Fiora及使用

说明:Fiora是一款偏二次元的Web多人在线聊天应用,使用Node.js、Mongodb、Socket.io和React编写,使用起来还行,挺简洁的,这里水个搭建教程,有兴趣的可以玩玩。 截图 ...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: