1. 存储地址
不管是那种引擎都是要存储,具体存储在哪个文件,可以通过datadir查询,这个配置可以在你启用mysql之前在config文件里面配置。
SHOW VARIABLES LIKE '%datadir%'
2. 表空间
独立表空间:就是每一个表是有一个独立文件,这是默认的
//默认是开启的,如果关闭就不会每个表都创建一个独立空间,而是会用共享表空间
SHOW VARIABLES LIKE '%innodb_file_per_table%'
共享表空间
- 系统表空间
这些表默认都会放到一个系统文件下面,如果一个系统文件放不下,我可能还会指定一些系统文件,所以这是由系统文件去决定的。
耦合性非常高,如果这个文件出问题了,那么所有表都会出问题
- 通用表空间
指定哪些表到哪个表空间,这个表空间是通用表空间,我可以创建表空间,但创建表的时候可以指定创建的表放在那个表空间下
3. 表空间的存储格式
行格式 ,就是我决定这个行数据是怎样存储的,它是以内存优先,还是以CPU优先,它是节省内存还是cpu的消耗。它会决定我们的一个性能。
行格式有四种:
- 冗余行格式
- companct:减少我们的行空间的,官方说大约能减少20%,但是增加了cpu的消耗
- dynamitc: 是默认的行格式,是多态行格式,允许长度是可变的,所以它可以根据不同的情况去需要更多的空间,是5.7以后默认的行格式
- compressed:压缩的行格式,它会对我们的companct进行压缩,检索的时候需要解压,就需要更多的cpu
page页:一般一个行不能超过一个页的一半,在页里面,为了更好管理页,又有一个区的概念,叫extent(区),
extent(区):区是属于一个页的分组,在一个区里面最少能存储64的page
segement(段):是为了更好管理我们的区