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

MySQL军规

作者头像
只喝牛奶的杀手
发布2021-09-23 15:29:22
3420
发布2021-09-23 15:29:22
举报

如何降低数据库磁盘IO?

  • 读多写少用缓存
  • 前台与后台分离架构
  • 最优质的SQL
  • 只让数据库做它最擅长的事情:存储和索引,少干其他事情
  • 大对象,原则不要存在数据库

如何降低CPU计算?

  • 数据库非必须的CPU计算,尽量挪到服务层
  • 禁止使用外键约束,由服务保障完整性
  • 禁止使用存储过程、视图、触发器、Event
  • 服务层,很容易扩展,数据库很难扩展,不变更数据库
  • 尽量不要使用jion,如果要用,必须保证字符集属性类型与长度一致
  • 禁止负向查询,与%开头的模糊查询
  • 字段类型,与查询字段赋值类型必须相同
  • 禁止在列上进行函数或者表达式计算
  • 字段必须定义为NOT NULL,并提供默认值
  • 联合索引,区分度最高的放在最左边
  • 联合索引,列个数不要超过5个

行为规范

  • 禁止在服务器上私自安装mysql客户端,来访问数据库
  • 账号禁止给别人使用
  • 禁止以任何形式,例如:session log导出数据
  • 禁止跳过工单,跳过审批,私自操作数据库
  • 禁止在业务高峰期(8:00-18:00)进行批量操作
  • 沙箱环境,等同于线上环境,禁止乱造数据

基础规范

  • 必须使用InnoDB
  • 必须要有注释
  • 必须使用utf8或者utf8mb4

表规范

  • 不要使用分区表
  • 必须要有主键,而主键不宜过长
  • 大字段,访问频率低的属性,垂直拆分

索引规范

  • 使用覆盖索引减少磁盘IO
  • order by,group by,distinct要加索引
  • 核心功能,SQL必须通知DBA,以确认索引的有效性
  • 别滥用索引,索引太多,属性太多,会占用缓冲池降低查询效率

SQL规范

  • 禁止select *
  • insert into 必须指定列
  • 拒绝复杂SQL,将大SQL拆成多条简单的SQL(推荐)
  • 应用程序必须捕获数据库异常

你会发现,数据库的性能的好坏,根本上来说是由访问数据库的service决的。要不要使用分区表?极客时间MySQL实战43讲。数据库稳定性谁负责?

参考:https://e.naixuejiaoyu.com/detail/l_60812a18e4b09890f0e5f7cd/4


每周一句:败而不耻,败而不伤,一路走来,看见的都是朋友和师长!

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

本文分享自 只喝牛奶的杀手 微信公众号,前往查看

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

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

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