mysql5.7优化案例_历时七天,史上最强MySQL优化总结,从此优化So Easy!

一、概述

1. 为什么要优化

一个应用吞吐量瓶颈往往出现在数据库的处理速度上

随着应用程序的使用,数据库数据逐渐增多,数据库处理压力逐渐增大

关系型数据库的数据是存放在磁盘上的,读写速度较慢(与内存中的数据相比)

2. 如何优化

表、字段的设计阶段,考量更优的存储和计算

数据库自身提供的优化功能,如索引

横向扩展,主从复制、读写分离、负载均衡和高可用

典型SQL语句优化(收效甚微)

二、字段设计

1. 典型方案

①. 对精度有要求

decimal

小数转整数

②. 尽量使用整数表示字符串(IP)

inet_ aton("ip' )

inet_ ntoa(num)

③. 尽可能使用not null

nuI数值的计算逻辑比较复杂

④. 定长和非定长的选择

较长的数字数据可以使用decimal

char为定长(超过长度的内容将被截掉), varchar为非定长,text对内容 长度的保存额外保存而varchar对长度的保存占用数据空间

⑤. 字段数不要过多字段注释是必要的、字段命名见名思意、可以预留字段以备扩展

2. 范式

①. 第一范式:段原子性(关系型数据库有列的念,默认就符合了)

②. 第二范式:消除对主键的部分依赖(因为主键可能不止一个);使用一 个与业务无关的字段作为主键

③. 第三范式:消除对主键的传递依赖;高内聚, 如商品表可分为商品简略信息表和商品详情表两张表

三、存储引擎的选择(MyISAM和Innodb)

1. 功能差异

Innodb支持事务、 行级锁定、外健

2. 存储差异

①. 存储方式:MyISAM的数据和索弓 |是分开存储的(.MYI.MYD) , 而Innodb是存在一起的(.frm)

②. 表可移动性:可以通过移动表对应的MYI和MYD能够实现表的移动,而Innodb还有 额外的关联文件

③. 碎片空间:MyISAM删除数据时会产生碎片空间(占用表文件空间),需要定期通过optimizetable table-name手动优化。而Innodb不会。

④. 有序存储:Innodb插入数据时按照主键有序来插入。因此表中数据默认按主键有序(耗费写入时间,因为需要在b+ tree中查找插入点,但查找效率高)

3. 选择差异

①. 读多写少用MyISAM:新闻、博客网站

②. 读多写也多用Innodb:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值