欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL系列-系统架构及存储引擎介绍

程序员文章站 2024-01-26 12:26:28
...

1.什么是MySQL?

MySQL是一款性能高、成本低、可靠性好的最流行的开源数据库,被各大互联网公司使用,目前MySQL属于Oracle公司。不久前MySQL也迎来了目前为止的最大版本更新MySQL8.0,就像Java8一样,MySQL直接从5.7跳到8.0了,同时也意味着这是一次革命性的版本。

2.MySQL的架构图

MySQL系列-系统架构及存储引擎介绍

这是MySQL的基本架构图,其实很多架构都是相通的,这个就非常类似于MVC的架构,做设计的时候其实可以参考这张图。在MySQL的内部也有一个查询缓存模块也就相当于我们的ORM框架的cache(cache真是无处不在啊,从cpu到软件应用)。我们比较注重的就是查询优化器了,但是它的能力有限,我们有时候要进行自己的优化或者指定强制使用某个索引,一般来说数据条数不超过100w也就没必要进行各种优化了,MySQL能够处理这个级别的数据量(官方宣称是300w-500w)。dml和ddl语句都有专门的处理模块等等。访问控制模块就是来管理数据库安全的了,也就是权限控制模块。下面还有多达数十个存储引擎,可能我们就使用过其中的一两个,最为重要的还是innoDB和MyISAM同时也是最为常用的,现在innoDB已经成了MySQL默认的存储引擎了。存储引擎属于表级别,这样就意味着我们创建表的时候可以具*定使用那个存储引擎。例如:

create table ta (
    id int primary key,
   name varchar(15)
)engine=myisam;

3.innoDB与MyISAM对比

MySQL系列-系统架构及存储引擎介绍

可以看出,MyISAM主要用来查询用的,而且不支持事务和外键,对于dml操作效率不如innoDB。如果你是5.5及以下版本需要设置单表空间才能看到innoDB的存储文件(.ibd格式)。例如:

show variables like '%innodb_file_per_table%';
set global innodb_file_per_table=on;
create table tb(
   id int primary key,
   name varchar(15)
)

MySQL系列-系统架构及存储引擎介绍

对于锁的粒度而言,MyISAM只支持表锁而innoDB支持表锁和行锁,粒度更细,这也就意味在innoDB行锁开销更大但是同时也获得了更高的并发性。后面我会专门讲解MySQL的锁。


参考文章:

https://www.cnblogs.com/jeffen/p/5990605.html

https://toutiao.io/posts/ajoc5v/preview