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

1.什么是MySQL?

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

2.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对比


可以看出,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)
)

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


参考文章:

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

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

猜你喜欢

转载自blog.csdn.net/ufo___/article/details/80519309