千家信息网

MySQL 5.6中Table cache是什么

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下MySQL 5.6中Table cache是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、Table CacheMySQL 5.6后,引入了"table_c
千家信息网最后更新 2025年01月20日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 分区数组。源码定义如下:

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是什么"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

存储 引擎 参数 文件 不同 最大 两个 作用 信息 内存 句柄 多个 对象 指向 指针 最大值 概念 源码 篇文章 独立 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 在mysql中显示数据库 db2 连接数据库慢 数据库技术与应用就业方向 软件开发哪个公司靠谱点 台州企业网络安全准入控制价格 工行软件开发中心 评论 登录苹果id账号验证服务器出错 重庆特色软件开发概念 数据库主数据文件扩展名 长春大学网络安全学院李莉 湖南出货软件开发 扬州服务器工控机的配置 按照网络安全等级保护制度 杭州建设智慧小区软件开发 锐点数据库 服务器管理文件夹的管理软件 博山财务办公软件开发报价 云服务器带宽 数据库为什么同步 国际网络安全事故案例 软件开发后怎么编程序 魔兽世界数据库取消了 服务器无响应是运营商的问题吗 电脑如何加入一个新的网络服务器 学习软件开发技术的成本高吗 清华同方数据库技术流视频 荒野大镖客是什么软件开发的 vr直播软件开发 计算机网络技术的职业特色 linux多服务器共享文件夹
0