DBA SQL Review

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

DBA SQL Review

Schema  REview的注意事项

SQL review的注意事项

线上Schema 分析优化技巧


DBA Review 工作内容

表字段、索引设计优化

字段类型(针对业务、故障等类型去确定字段)

注释标准度

分区表约束

SQL编写规范

DML编写规范

子查询约束

函数使用

优化的目的:

为开发人员提出更高的建议

Schema  REview的注意事项

Schema  REview的目标

功能实现为主

保证节省资源

平衡业务技术各个方面,做好取舍

让数据库干自身擅长的工作

不在在DB里进行操作

减少复杂操作

字段数量

建议不超过20-50个

做好数据评估

 建议纯int不超过1000万,含有char的不要超过800万

 非核心表另议

可以考虑反范式设计

适合的冗余设计,减少join

核心表尽可能精简

日志表可进行水平分表

注意引擎区别 Innodb & Tokudb

Tokudb  减少update操作  (更新数据 表会变得很大)

字段设计

主键 innodb表是以主键排序存储IOT尽量使用短,自增的列做索引,复制结构中row

格式中,如果表有主键可以加速复制。

INT 无符号自增列  可以考虑BIG int

可用uuid_short()代替uuid 转成bigint 存储

注意潜在风险

tinyint 做大表主键可能导致mysql  crashed

类型转型导致查询效率很低

mysql在开发上面的特点

(1)每个query 只能用到一个core(处理层)

(2)没有执行的缓存

(3)mysql默认情况下,随着连接数的增加。性能会下降   (基于连接数的压力测试)

(4)校验式嵌套处理  没有hashjoin


在主从复制结构中从库对主键的选择

(1)会选择主键

(2)会选择有效的索引

(3)全表扫描

针对高速写入的环境的主键设计


字符集问题

Emoji表情 表示用utf8mb4

将字符转数字存储

利用int 存储ip 而非char(15)

INET_ATON() &INET_NTOA()

将日期转换成数字

from_unixtime()

unix_timestamp()

null与 not null有什么坑?

C1 vchar(16)default null    不建议

C1 vchar(16)default not  null   不建议

C1 vchar(16)default not null default ''  建议  


schema  Review

工具:

利用pt-mysql-summar 指定DB分析

利用pt-duplicate-key-checker 指定DB 查看重复索引、重复主键 官方手册

功能环境记录全量慢日志用于分析

SQL Review注意事项

SQL Review 总则

避免线上系统出现大操作

全面使用索引

优化join

去除无意义逻辑

注重查看where条件

除了select 语句,没有where条件的可以直接去掉

where条件字段 区别度高字段,注意建索引

like不要出现以%开头的查询

对于出现子查询的sql,要确定上线的mysql版本,利用explain确认

避免使用sslect *,fa方便调整字段列表,还可以减少不必要的I/O

insert 要对字段写入

整个SQL要用explain确认

去除无意义的操作

很多SQL是生成的。如ibatis,Hibernate 生成的类的SQL

其他框架生成的SQL

复杂类的SQL中无意义逻辑去除

不必要的括号也可以去除

优化join

控制最多三层join建议2个以下

小表驱动大表

字典 常用表 其他表排序

控制join后面where条件选择的的行数,尽量在1000行以下

使用union all 代替union

减少临时表出现

避免线上大的操作

分批多次操作

大事务拆分成多个事务区分间操作

频繁的查询考虑适当的缓存

对于text,blob字段。适当进行拆分



本文转自 tianya1993 51CTO博客,原文链接:http://blog.51cto.com/dreamlinux/1840749,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL 运维 数据库
SQL Server DBA日常运维语句(上)
今天我们介绍一下,日常工作中的一些运维语句,可以当作工具直接来使用。
|
SQL 运维 数据库
SQL Server DBA日常运维语句(下)
今天我们介绍一下,日常工作中的一些运维语句,可以当作工具直接来使用。
|
存储 SQL 监控
|
SQL 监控 关系型数据库
【学习资料】第5期PostgreSQL DBA最常用SQL
大家好,这里是PostgreSQL DBA最常用SQL
|
SQL 网络协议 关系型数据库
史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)
PostgreSQL连续两年被评为年度数据库,备受很多DBA的青睐,本文我们一起来了解学习PostgreSQL常用的查询语句有哪些?
5608 0
|
SQL 监控 关系型数据库
PostgreSQL DBA 日常管理 SQL
标签 PostgreSQL , DBA , 日常 背景 1、AWR 数据库健康报告, 《PostgreSQL AWR报告(for 阿里云ApsaraDB PgSQL)》 《如何生成和阅读EnterpriseDB (PPAS(Oracle 兼容版)) AWR诊断报告》 2、查看TOP SQL,以...
5982 0