mysql体系结构和存储引擎
2018-05-29 10:53:40 小德 MySQL 访问次数 487

一、数据库和实例

    数据库:是文件的集合(一般老说是二进制文件,frm,MYD,MYI ibd为后缀),依靠某种数据模型存放在二级存储器中的数据集合;

    数据库实例:后台线程一级一个共享内存区组成。是程序,是位于用户和OS之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义,数据查询,数据维护,数据运行控制都在数据库实例下进行的,应用程序只有通过数据库实例才和数据库打交道;

    mysql数据库实例在系统上的表现就是一个进程。


二、mysql的组成部分

    连接池:

    管理服务和工具组件:

    SQL接口组件:

    查询优化器

    缓冲组件

    插入式存储引擎

    物理文件

    image.png

    储存引擎是基于表的,而不是数据库。


三、常见的数据库引擎

    InnoDB设计的主要目标就是基于在线处理事务,行锁,外键,默认读操作不会产生锁;MVCC提高并发;

    next-key-locking避免幻读;

    插入缓冲、二次写、自适应哈希,预读提高性能和可用性。

    MyISAM:缓冲池只缓存索引文件,不缓存数据文件,存储引擎表有MYD(数据文件)和MYI(索引文件);压缩数据文件,Huffman编码算法;

    Memory:默认使用哈希索引,仅支持表锁 并发差,mysql的临时表使用Memory引擎存放中间结果集;如果中间结果集大于Memory的存储容量或者含有blog和text类型,会转化成MyISAM存放在磁盘中。

    Archive:使用zlib算法将数据行进行压缩后存储,压缩比可达1:10,适合用于存储归档数据,日志信息。行锁实现高并发插入


四、连接MySQL

      mysql连接操作是一个连接进程和mysql数据实例进行通信;本质是进程间的通信。(进程通信方式:管道 命名管道、TCP/IP、UNIX域套接字) 

    TCP\IP:mysql -h host -u user -p    这种方式MySQL会先检测一个权限视图,以及请求端IP;

    UNIX域套接字:

                show variables like 'socket';

            获取到 socket套接字的文件路径;然后通过套接字文件连接:mysql -uuser -S '套接字文件路径';

           

参考资料:

    《MySQL技术引擎内幕InnoDB存储引擎》 第二版 ---机械工业出版社