久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL 5.6中Table cache是什么

150次閱讀
沒有評論

共計 1352 個字符,預計需要花費 4 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 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 是什么”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-26發表,共計1352字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 望奎县| 吉隆县| 南宁市| 合阳县| 江源县| 鄂伦春自治旗| 岐山县| 广东省| 西城区| 上高县| 兰溪市| 敦化市| 教育| 五大连池市| 罗江县| 额济纳旗| 青州市| 惠安县| 延长县| 武隆县| 茂名市| 郓城县| 道真| 扶风县| 新乡市| 台中市| 交城县| 四平市| 疏勒县| 宜州市| 台东市| 白山市| 定陶县| 巫溪县| 精河县| 日喀则市| 苍梧县| 淮安市| 乐东| 峨边| 碌曲县|