MySQL

MySQL体系结构与存储引擎

2020-08-07  本文已影响0人  AbstractCulture

数据库和实例

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

    ps -ef | grep mysqlId

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

排序越靠后,权重越高

    mysql --help | grep my.cnf

存储引擎

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

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

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

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

只支持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;

上一篇 下一篇

猜你喜欢

热点阅读