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

Mysql中Thread Manager的作用是什么

127次閱讀
沒有評論

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

今天就跟大家聊聊有關 Mysql 中 Thread Manager 的作用是什么,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。

 1. 線程創(chuàng)建函數(shù)

  大家知道,Mysql 現(xiàn)在是插件式的存儲引擎,只要實現(xiàn)規(guī)定的接口,就可實現(xiàn)自己的存儲引擎。故 Mysql 的線程創(chuàng)建除了

出現(xiàn)在主服務器框架外,存儲引擎也可能會進行線程的創(chuàng)建。通過設置斷點,在我調試的版本中,發(fā)現(xiàn)了兩個創(chuàng)建線程的函數(shù)。

  os_thread_create 是存儲引擎 innobase 的線程函數(shù),先擱淺不研究了,重點看下 pthread_create,首先看下其源碼。

map- func=func; map- param=param;

hThread=(HANDLE)_beginthread((void( __cdecl *)(void *)) pthread_start, attr- dwStackSize ? attr- dwStackSize : 65535, (void*) map);

上面代碼首先構造了一個 map 結構體,成員分別是函數(shù)地址和傳入?yún)?shù)。然后調用操作系統(tǒng)的接口,_beginthread, 但是執(zhí)行函數(shù)并不是傳入的函數(shù) mdash; mdash;func,而是 pthread_start, 參數(shù)為 map。繼續(xù)跟蹤 pthread_start。

func=((struct pthread_map *) param)- func

  可以看出,pthread_start 中調用了 map 的 func 元素,作為真正執(zhí)行的函數(shù)體。OK, 創(chuàng)建線程的函數(shù)跟蹤到此!

 2. 服務器啟動時創(chuàng)建了哪些函數(shù)?

  通過在兩個創(chuàng)建線程的地方設置斷點,總結了下,在服務器啟動時,創(chuàng)建了如下的線程。

pthread_create 創(chuàng)建的線程:

innobase 的 os_thread_create 創(chuàng)建的線程:

  還可以在調試過程中,通過暫停來看此時服務器中的線程,如下圖:

三、線程緩沖池

 Mysql 支持線程緩存,在多線程連接模式下,如果連接斷開后,將這個線程放入空閑線程緩沖區(qū),在下次有連接到來時,

先去緩沖池中查找是否有空閑線程,有則用之,無則創(chuàng)建。啟動時可以設置線程緩沖池的數(shù)目:

  在一個連接斷開時,會調用 cache_thread 函數(shù),將空閑的線程加入到 cache 中,以備后用。如下:

cached_thread_count thread_cache_size

pthread_cond_signal(COND_flush_thread_cache);

  上面我們的啟動參數(shù)設置線程緩沖區(qū)為 10,此時對應代碼里面的 thread_cache_size = 10,cached_thread_count 記錄

了此刻 cache 中的空閑線程數(shù)目,只有在 cache 未滿的情況下,才會將新的空閑線程加入緩沖池中。加入到緩沖區(qū)其實就是將線

程掛起,pthread_cond_wait 函數(shù)便是線程等待函數(shù),在此函數(shù)中,會調用 WaitForMultipleObjects 進行事件等待。具體源碼

如下:

result= WaitForMultipleObjects(2, cond- events, FALSE, timeout);

  此處是等待時間,何處進行事件通知呢?我們再次來到上篇所提及的為新的連接創(chuàng)建線程的代碼中:

pthread_cond_signal(COND_thread_cache);

看完上述內容,你們對 Mysql 中 Thread Manager 的作用是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業(yè)資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計1472字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 于田县| 德化县| 桦甸市| 阳山县| 砀山县| 汪清县| 图木舒克市| 陇南市| 黔南| 中江县| 泉州市| 武汉市| 沅江市| 铜鼓县| 牟定县| 黄大仙区| 台中县| 柳江县| 陵水| 垣曲县| 岑溪市| 县级市| 沁水县| 丹棱县| 抚顺市| 太保市| 苍山县| 黄龙县| 宜都市| 都昌县| 伊吾县| 志丹县| 河池市| 双鸭山市| 武城县| 雷山县| 永丰县| 普兰县| 尉氏县| 息烽县| 原平市|