mysql 体系架构:单进程,多线程。上下文切换代价小,cpu消耗低。oracle数据库是多进程的,并发性好。
mysql 数据库与实例的关系:
oracle 数据库数据库实例可以是1:n 的关系。
MySQL 5.6 Innodb架构
MySQL 数据库文件:
数据库其实就是磁盘上的文件,它主要包括一下几个文件:
数据库配置文件:
就是参数配置文件,/etc/my.cnf
不建议使用service mysql start 命令启动。建议使用mysqld_safe --defaults-file = 配置文件。
表结构定义文件:
在my3306/data/ mysql 中, **.frm 是表结构定义文件,mysql提供工具mysql-utilities-***, 要去mysql官网下载rpm包,安装完成后,使用mysqlfrm --diagnostic **.frm命令查看文件。
数据文件:
在my3306/data/mysql 中,**.MYD 是数据文件,**.MYI 是索引文件,所以MyiSAM引擎来说,数据和索引是分开的,对于Innodb来说,两者是合并的 **.ibd 。
错误文件:
查看相关配置: show variables like '%error%'; 可查看错误日志存放目录。
慢查询日志:
查看相关配置: show variables like '%slow%'; show variables like 'long_query_time'; 保存sql执行时间长的语句。
通用日志:
默认是不开启的。开启的话数据库所有操作就会记下来,影响性能。如果想研究一下 mysqldump备份的过程,可以先开启通用日志,在执行命令可查看执行过程。 查看配置 show variables like "%general%"
mysql 连接数
show variables like 'connect'; 连接数根据实际情况设置,不宜过大,会占用内存。
一个连接会占用服务器内存 512k-64M。
mysql 服务器进程(简化版)
MySQL SQL 处理过程
高速缓存对应变量:
说明:先去检查高速缓存,建议不要开启,因为任何的修改都会更新高速缓存。解析查询分为硬解析(第一次解析),软解析(第多次解析,可复用SQL的执行计划)
MySQL 内存结构:
说明:连接/会话 内存是线程私有的。其余两个内存结构是线程共享的。
MySQL 内存参数
Mysql 对应的磁盘空间
MySQL 物理存储结构:
MySQL 逻辑存储结构: