Mysql数据库调优——分区
参考资料:
MySQL分区:https://www.bilibili.com/video/BV1E7411q7Nx
MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷:https://www.bilibili.com/video/BV12b411K7Zu
实体书籍:数据库事务并发处理的艺术 事务管理与并发控制 李海翔 等著
博文中部分图片和文字源自网络。部分文字,因学习时记录的笔记时间已久远,无法找到出处,侵删。
不论是面试还是正常工作,sql因为其语言本身的阅读和书写性非常贴近人类语言的语法,所以面试的时候,并没有什么好问的,最多是写写sql多表查询或者子查询这种量级的sql语句,重点基本都集中在一下几个部门了:
ACID都是怎么实现的(其实就是变着花样问MVCC(Mysql使用快照隔离实现)、封锁技术、log(Redo/undo));
大表优化(索引,分区,分表)
基本是从sql调优和Mysql的InnoDB的底层入手,展开各种各样的概念或者场景问题。
本文内容大部分来自于MySQL分区:https://www.bilibili.com/video/BV1E7411q7Nx
思维导图:
思维导图中基本是陈述了分区的具体sql语法,分区的具体管理等。
那么分区的意义到底何在呢?
一张大表,分区后,还是一张表,但是存放数据的区域变多了。
分区不会影响表,表还是一张表,只不过是把存放数据的文件分成许多小块。
分区是为了突破磁盘读写的IO瓶颈,一个分区中的数据少了,操作肯定也快了,IO次数也会减少
那么分表呢?
分表是把一张大表分成很多的小表,每个小表都是完整的一张表,都对应着三个文件(.MYD,.MYI,.frm)
分区只不过把存放数据的文件分成许多小块,分区后的表,还是一块表
分表后,单表的并发能力提高,将不同查询及并发压力分散到不同的表中
二者都是为了优化而存在的,但是侧重点不同
分区是为了突破磁盘I/O瓶颈
分表是为了提高并发