美文网首页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