我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 5.6中Table cache是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 5.6中Table cache是什么

小编给大家分享一下MySQL 5.6中Table cache是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一、Table Cache

 MySQL 5.6后,引入了“table_cache_instances”参数来控制 table cache instance的个数。目前最大值是64,默认值是1。建议值是16,当系统CPU核数高于16时。引入此参数的目的是,提高并发。相当于把table cache 拆成了多个分区,每个分区的打开table句柄数为:table_open_cache / table_open_cache_instances。跟innodb_buffer_pool_instances参数有异曲同工的作用。
     table_cache_instances的最大值为64,每个thread会使用哪个table cache instance,根据thread id取模得到:m_table_cache [thread_id % table_cache_instances]。其中m_table_cache是table cache的instance 分区数组。源码定义如下:
MySQL 5.6中Table cache是什么

      Table cache instance统一由Table_cache_manager类来管理。Table_cache_manager负责初始化和销毁table cache instance。
     另外,取代LOCK_open锁的是64个m_lock mutex。因此大大降低了table cache 锁的争用,将其分摊到了64个instance上的m_lock mutex上。
     但是涉及到多个table cache中的对象的DDL语句,仍然需要整个table cache级别的锁,即Lock_open。另外,对所有table cache instances以及table definition cache上锁时,也需持有Lock_open锁。

二、Table cache & Table definition cache

Table cache与Table definition cache是两个概念完全不同的东西。

Table cache:也就是通常说的 table open cache。存放当前已经打开的表句柄,与表创建时指定的存储引擎相关。这块在源码上的体现是 table object即有指向table share的指针,也有指向具体存储引擎的handler指针。

Table definition cache:存放表的定义信息。是frm文件在内存中的映射。MySQL需要打开frm文件,并将其内容初始化为Table Share 对象。这里存放与存储引擎无关的,独立的表定义相关信息。

为什么MySQL会出现这两个概念是因为:MySQL支持不同的存储引擎,每种存储引擎,数据存储的格式都是不一样的,因此需要指定一个存储引擎相关的handler。这就有了table cache的作用。另外表的定义也需要存放内存中,而表的定义frm文件每个存储引擎是通用的,需要另外独立开来,这就有了table definition cache。

看完了这篇文章,相信你对“MySQL 5.6中Table cache是什么”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 5.6中Table cache是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php-5.6中的新特性是什么

今天小编给大家分享一下php-5.6中的新特性是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php-5.6是指已发布的
2023-06-26

MySQL中alter table语句的作用是什么

在MySQL中,ALTER TABLE语句用于修改现有表的结构。具体来说,ALTER TABLE语句可以用来执行以下操作:添加列:您可以使用ALTER TABLE语句向现有表中添加新列。删除列:通过ALTER TABLE语句,您可以删除现
MySQL中alter table语句的作用是什么
2024-04-09

MySQL中CTAS(CREATE TABLE AS SELECTED)的概念是什么?

CTAS,即“Create Table AS Select”脚本用于从现有表创建表。它复制表结构以及现有表中的数据。考虑以下示例,其中我们从名为“Employee”的现有表创建了名为 EMP_BACKUP 的表mysql> Select *
2023-10-22

php5.4和5.6的区别是什么

PHP5.4和5.6的区别是:1、5.6版本在定义变量时允许使用之前定义的常量进行计算,并且允许常量作为函数参数默认值,而5.4版本则不允许;2、5.6版本命名空间支持常量和函数,而5.4版本不支持。本文操作环境:Windows10系统、PHP5.6&&PHP5.4版、Dell G3电脑php5.4和5.6的区别是什么PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置
2022-06-22

PHP7.1和5.6的区别是什么

PHP7.1和5.6的区别:1、7.1版本全面一致支持64位,而5.6版本则没有全部支持;2、7.1版本移除了一些老的不再支持的服务端应用编程端口的扩展,而5.6版本则没有移除;3、7.1版本新增了函数的返回类型声明和匿名类,而5.6版本中则没有。本文操作环境:Windows10系统、PHP7.1&&PHP5.6版、Dell G3电脑PHP7.1和5.6的区别是什么一、俩者的区别1.PHP7.1比P
2022-06-23

Linux内存、Swap、Cache、Buffer是什么

今天小编给大家分享一下Linux内存、Swap、Cache、Buffer是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-06-28

Cache 和 Buffer 的区别是什么

这篇文章主要为大家分析了Cache 和 Buffer 的区别是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Cache 和 Buffer 的区别是什么”
2023-06-04

html5中table指的是什么意思

小编给大家分享一下html5中table指的是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在html中,table是表格,语法格式为“表格
2023-06-15

oracle中truncate table的用法是什么

在Oracle中,TRUNCATE TABLE 是一种快速删除表中所有行的操作。它比DELETE操作更快,因为它不会记录删除的每一行,而是直接释放表空间,然后重新分配。TRUNCATE TABLE 会删除表中所有的数据,但保留表的结构和定义
oracle中truncate table的用法是什么
2024-04-09

oracle中alter table的用法是什么

在Oracle中,ALTER TABLE语句用于修改已存在表的结构,例如添加、修改或删除列,修改表的约束,修改表的存储选项等。常见的用法包括:添加列:ALTER TABLE table_name ADD column_name data_t
oracle中alter table的用法是什么
2024-04-09

编程热搜

目录