MySQL体系结构
它是一个单进程,多线程的数据库。
数据库:物理操作系统文件或其它形式文件类型的集合。
实例:MySQL 数据库由后台线程以及一个共享内存组成,共享内存可以被运行的后台线程所共享,数据库实例才是真正用于操作数据库文件的。
MySQL 数据库的体系结构如下图
需要注意的是 :存储引擎是基于表的,不是基于数据库的。
MySQL 的存储引擎:
-
InnoDB:主要用于 OLTP 应用
-
MyISAM:主要用于 OLAP 应用
-
Memory:数据全部存在内存中,默认使用 hash 索引,而不是 B+ 树,只支持表锁。
-
Archive:只支持 SELECT 和 INSERT 操作,使用 zlib 算法对数据进行压缩。
InnoDB 引擎
-
支持事物
-
行锁设计
-
通过 MVCC 获得高并发性,使用间隙锁避免幻读的现象
-
每张表的数据都是按照主键的顺序进行存放,没有主键,会生成一个 6 字节的 ROWID
MyISAM 引擎
-
不支持事物
-
表锁设计
-
支持全文索引
-
缓冲池只缓冲索引文件,并不缓存数据文件
查看当前 MySQL 支持的存储引擎:
-
查询
information_schema.ENGINES
表 -
使用
show engines\G
命令
示例:
连接MySQL
常用的连接通信方式是:TCP/IP套接字、UNIX 域套接字。
-
TCP/IP 套接字:
mysql -h192.168.0.101 -uroot -p
-
UNIX 域套接字:就是 socket 文件,如
—socket=/tmp/mysql.socket
。
可以使用 show variables like 'socket'
来查看服务器当前的 socket 文件。