文件:
参数文件:包含一些设置信息,初始化信息 mysql --help | grep my.cnf. show variables命令所查询的就是这些参数
日志文件:如错误日志文件,二进制日志文件,慢查询日志,查询日志等
socket文件:用于unix套接字连接
pid文件:进程ID文件
mysql表结构文件:用来存放mysql表结构定义
存储引擎文件:每个存储引擎都会有自己的文件来保存各种数据。存储引擎真正存储了数据和索引等。
日志文件
错误日志: show variables like ''log_error';
慢查询日志: show variables like 'log_slow_queries'
查询日志:主机名.log
二进制日志:只记录 更改 操作(不记录select show等操作) 其作用:恢复和复制
表结构定义文件 : .frm
无论采用何种存储引擎,mysql都有一个以frm为后缀名的文件。记录了该表的表结构定义。
innoDB存储引擎文件:
redo log ; ib_logfile0,ib_logfile1
表空间文件:若未设置 innodb_file_per_table,为ibdata1,ibdata2.若设置,则每个表都有.ibd文件 单独的表空间文件只存储数据、索引和插入缓冲等信息,其他信息(undo,系统事务信息,二次写缓冲)还是在默认的表空间中
redo log与二进制日志的不同:二进制日志会记录所有与mysql有关的日志记录,无论是何存储引擎,redo log只记录innodb的事务。
二进制日志记录事务的具体操作,redo log则记录每个页的物理情况
表:
段(segment): 数据段(B+树叶节点),索引段(B+树非叶节点),回滚段(rollback segment)
InnoDB存储引擎是索引组织的(index organized),所以数据即索引,索引即数据。
区(extent):段由区组成
页(page 或者block): 区由64个page组成,page中存储着多个row信息 row之间有指针,类似链表 VARVHAR最大长度为65535,因为compact行记录格式开头为变长字段长度列表,比如有3个varchar,长度分别为1,2,3,则记录为03 02 01(2个字节,16进制) 所以最大长度为FF(65535)