MySQL 是一个可高度定制化的数据库系统,提供了很多可配置的参数。
MySQL是单进程多线程(而Oracle等是多进程),也就是说MySQL实例在系统上表现就是一个服务进程,即进程(通过多种方法可以创建多实例,再安装一个端口号不同的mysql,或者通过workbench来新建一个端口号不同的 服务器实例等),该架构类似于SQL Server和Windows版本的Oracle;
MySQL实例是线程和内存组成,实例才是真正用于操作数据库文件的(MySQL数据库是由一些列物理文件组成,类似于frm、MYD、MYI、ibd结尾的文件);
一般情况下一个实例操作一个或多个数据库(Oracle一个实例对应一个数据库);集群情况下多个实例操作一个或多个数据库。
在默认情况下,MySQL有7组后台线程,分别是1个主线程,4组IO线程,1个锁线程,1个错误监控线程。MySQL 5.5之后又新增了一个 purge线程。这些后台线程的主要功能如下。
master thread:主要负责将脏缓存页刷新到数据文件,执行 purge操作,触发检查点,合并插入缓冲区等。
insert buffer thread:主要负责插入缓冲区的合并操作。
read thread:负责数据库读取操作,可配置多个读线程。
write thread:负责数据库写操作,可配置多个写线程。
log thread:用于将重做日志刷新到 logfile中。
purge thread:MySQL 5.5之后用单独的 purge thread执行 purge操作。
lock thread:负责锁控制和死锁检测等。
错误监控线程:主要负责错误监控和错误处理。