开发者社区> 技术小阿哥> 正文

DBA SQL Review

简介:
+关注继续查看

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24733 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
13376 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
32679 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14607 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
8953 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
12397 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
13762 0
13692
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载