美文网首页MySQL
MySQL体系结构与存储引擎

MySQL体系结构与存储引擎

作者: AbstractCulture | 来源:发表于2020-08-07 09:23 被阅读0次

数据库和实例

  • 数据库: 存储在物理操作系统系统文件或者其他形式文件类型的集合,根据存储引擎的不同,产生的文件可能是frm、MYD、MYI、ibd结尾的文件。(NDB是基于内存的存储引擎,产生的文件存储在内存中)。
  • 实例: 数据库实例是真正操作数据库文件的,它是一个应用进程,从架构上来看,它是单进程多线程的。

如果你在Linux上有安装MySQL实例,那么你可以通过以下指令对MySQL数据库的状态进行查看:

    ps -ef | grep mysqlId

查看配置文件读取顺序:my.cnf

排序越靠后,权重越高

    mysql --help | grep my.cnf

存储引擎

MySQL提供了可插拔式的表存储引擎(注意,存储引擎是针对表结构来说的,很多人习惯性地把存储引擎理解为是数据库级别的行为)

可以通过SHOW ENGINES查看当前MySQL数据库所支持的存储引擎.
  • InnoDB
  1. InnoDB支持事务,面向OLTP(面向在线事务处理)。
  2. InnoDB支持行锁与表锁,外键约束,还有区别于MyIsAM的非锁定读,即默认读不加锁。
  3. InnoDB使用MVCC(多版本并发控制)来保证它在高并发下的性能,并且提供了4种事务隔离级别,默认为REPEATABLE级别。
    对于产生幻读问题,InnoDB使用了一种next-key locking的策略来避免幻读的产生。
    除此之外,InnoDB提供了插入缓冲、二次写、自适应哈希索引、预读等高可用、高性能的功能。
  4. 聚簇。InnoDB采用聚簇的方式对数据进行存储,无论是数据或者索引,大多数它们都基于B+树而实现(B-树可以理解成规约,但是具体实现为B+树)。
  • MyISAM
  1. MyISAM存储引擎不支持事务,面向OLAP数据库应用.
  2. 支持全文索引,仅支持表锁.
  3. MyISAM的缓冲池只缓存索引文件,而不缓存数据文件.
  4. MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。
  • NDB

集群存储引擎,最大的特点是将数据加载到内存中进行检索。但是MySQL5.7中,NDB存储引擎的连接操作仍是在MySQL数据库层完成的。所以连接操作需要巨大的网络开销。

  • Memory

Memory存储引擎将表中的数据放在内存中,如果数据库重启或者崩溃,表中的数据将会消失。值得一提的是,Memory是使用Hash索引的,而不是InnoDB中使用的B+树索引。
缺陷: 仅支持表锁,并发性能较差,不支持TEXT和BLOB列类型。

  • Archive

只支持INSERT和SELECT操作,支持索引。它使用了zlib算法对行数据进行压缩。基于以上特性,Archive框架非常适合存储日志信息。

TCP/IP

TCP/IP套接字方式是MySQL数据库在任何平台都提供的连接方式,也是网络中使用的最多的一种方式。Server端和Client端通过TCP/IP进行网络通信。

Linux下的连接命令
mysql -h192.168.0.101 -u root -p
MySQL的权限视图

MySQL将用户的账户密码信息存放在user表下.

use mysql;
SELECT host,user,password FROM user;

相关文章

网友评论

    本文标题:MySQL体系结构与存储引擎

    本文链接:https://www.haomeiwen.com/subject/cetzrktx.html