MySQL必知必会


[toc]

与其他数据库系统相比,MySQL的架构可以在多种不同场景中应用并发挥好的作用。MySQL既可以嵌入到应用程序中也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统(OLTP)等各种应用类型。

MySQL架构

逻辑架构

MySQL的存储引擎架构将查询处理及其他系统任务和数据的存储/提取相分离

{ % asset_img mysql_1.png %}

MySQL在存储引擎和服务层之间吹查询时如何通过API来会交互

并发控制

在处理并发读或写时,可以通过实现一个或两种类型的锁组成的锁系统来解决。

共享锁(读锁):

读锁是共享的,或者说是相互不阻塞的,多个客户在同一时刻可以同时读取同一个资源,而互不干扰。

排他锁(写锁):

写锁是排他的,也就是说一个写锁会阻塞其他的写锁和读锁。

锁粒度:

在选择封锁粒度时,需要在锁开销和并发程度之间做一个权衡——应该尽量只锁定需要修改的那部分数据,而不是所有的资源,锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高;但是加锁需要消耗资源,锁的各种操作都会增加系统开销,因此锁粒度越小,系统开销越大

锁策略:

表锁:最基本、开销最小的策略,会锁定整张表;

行级锁:最大程度地支持并发处理,最大的锁开销,只在存储引擎层实现,MySQL服务器层没有实现

存储引擎

InnoDB是MySQL的默认事务型引擎,也是最重要、使用最广泛的存储引擎;

MySQL 5.1 及之前的版本,MyISAM是默认的存储引擎;MyISAM不支持事务和行级锁

MySQL索引

索引(在MySQL中也叫做“键”)是存储引擎用于快速找到记录的一种数据结构;索引可以包含一个或多个列的值,如果索引包含多个列,那么列的顺序也十分重要,因为MySQL只能高效地使用索引的最左前缀列

优点:

  • 减少查询需要扫描的数据量(加快了查询速度)
  • 减少服务器的排序操作和创建临时表的操作(加快了groupby和orderby等操作)
  • 将服务器的随机IO变为顺序IO(加快查询速度).

缺点:

首先索引也是数据,需要存储,因此会带来额外的存储空间占用;其次,在插入、更新和删除操作的同时,需要维护索引,因此需要带来二外的时间开销。

  • 索引占用磁盘或者内存空间
  • 减慢了插入更新操作的速度

类型:

由索引的定义可以看出索引是交给存储引擎去实现的,而MySQL支持多存储引擎,所以不同的存储引擎实现的索引类型不太一样。

B-树索引/B+树索引:

  • 中间节点不保存数据,那么就可以保存更多的索引,减少数据库磁盘IO的次数
  • 中间节点不保存数据,所以每一次的查找都会命中到叶子节点,而叶子节点是处在同一层的,因此查询的性能更加稳定
  • 所有的叶子节点按顺序链接成链表,因此方便进行范围查询

哈希索引

空间数据索引

全文索引

MySQL查询

MySQL查询特别慢:

MySQL事务

事务——一组原子性的SQL查询,或者说一个独立的工作单元;事务内的语句,要么全部执行成功,要么全部执行失败;

ACID特性、四种隔离级别

存储

datetime 和timestamp

类型 占据字节 表示形式 表示范围
datetime 可以为NULL 8(与时区无关) yyyy-mm-dd hh:mm:ss ‘1000-01-01 00:00:00.000000’ to ‘9999-12-31 23:59:59.999999’
timestamp 当前时间到Unix元年(1970-01-01 00:00:00)的秒数,不可以为NULL,自动存储当前时间 4(以UTC格存储) yyyymm-dd hhmmss ‘1970-01-01 00:00:01.000000’ to ‘2038-01-19 03:14:07.999999’

Manba_girl: Mamba_girl
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Mamba_girl !
 上一篇
前端框架 前端框架
JavaScript在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互 新兴的Node.js把JavaScript引入服务器端; 基础JavaScript代码可写在哪里1.JavaScript代码可以直接嵌在网页
2020-05-29 Mamba_girl
下一篇 
JVM和Java并发 JVM和Java并发
主要是总结一下有关于JVM和Java并发的一些笔记,笔记持续更新...
2020-05-08
  目录