InnoDB
、MyISAM
、Memory
等多个存储引擎,如今默认为 InnoDB
当一个SQL执行时首先会进入查询缓存mysql
查看以前是否执行过该语句,若是执行过则会以key-value的形式保存在缓存中,key是查询语句,value是查询结果sql
若是缓存命中则直接返回结果,若是查询语句不在缓存中继续后面的流程缓存
大多数状况下咱们不推荐使用查询缓存,由于缓存失效很是频繁,只要一个更新,那么这个表上全部的缓存都会失效,吐过数据的更新比较多,那么缓冲命中的效率很低,不断的在失效微信
在MySQL中提供了参数 query_cache_type
参数来设置,默认是 DEMAND
,表示对默认的SQL都不使用查询缓存,若是要对特的语句进行缓存查询,则可使用 SQL_CACHE
来显示的指定,如 select SQL_CACHE * from T where ID=1;
函数
在MySQL8.0 开始,查询缓存整个功能模块已经删除掉再也不拥有优化
select
标记出来,这就是一个查询,在具体的表名,查询 的字段等等所有分析出来You have an error in your SQL syntax
的提示join
时,查询表的顺序128MB
, 偏小my.ini
配置:[server]
innodb_buffer_pool_size = 2147483648插件
Buffer Pool
中,16KB
, 也就是一页数据包含16KB
的数据BufferPool
中的数据页通常咱们叫缓存页,默认状况下缓存页与磁盘上的数据页大小是对应的Buffer Pool
中的内存地址以及其余一些信息Buffer Pool
中,全部的描述信息都在最前面,而后各个缓存页放在后面5%
左右,也就是大概800
字节,因此当咱们设置buffer pool
的大小为128MB
,可是实际上 Buffer Pool
的真实大小会超出一些,可能有有130MB
左右,这多出来的就是每一个缓存页的描述信息表名.ibd
, 这样的磁盘数据文件,这就是表空间的概念和物理体现表名.ibd
的数据文件在表空间中有太多的数据页很差管理,这是引入了数据区的概念,英文:extent
code
一个数据区中有连续的64
个数据页,每一个数据页16kb
, 因此每一个数据区大小是1MB
server
同时265
个数据区被划分为一组blog
在表空间中第一组数据区的第一个数据区的前三个数据页是固定的,存放一些特殊的描述性的信息
FSP_HDR
数据页: 存放一些表空间和这一组数据区的属性IBUF——BITMAP
数据页:存放这组数据页全部的 insert buffer
的一些信息INODE
数据页:存放一些特殊信息表空间中其余各组数据区的第一个数据区的头两个数据页都是存放特殊信息的
本文由AnonyStar 发布,可转载但需声明原文出处。
欢迎关注微信公帐号 :云栖简码 获取更多优质文章
更多文章关注笔者博客 :云栖简码 i-code.online