精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一起學(xué)習(xí)MySQL源碼筆記之偷窺線程

數(shù)據(jù)庫 MySQL
Mysql經(jīng)過了很多牛人的手之后,集眾牛人之長吧。也可能是我見識比較淺薄,適應(yīng)了自己的代碼風格,井底之蛙了,總之還是懷著敬畏的心情開始咱的源碼之旅吧。

安裝完Mysql后,使用VS打開源碼開開眼,我嘞個去,這代碼和想象中怎么差別這么大呢?感覺代碼有些凌亂,注釋代碼都寫的比較隨意,好像沒有什么統(tǒng)一的規(guī)范,不同的文件中代碼風格也有差異,可能Mysql經(jīng)過了很多牛人的手之后,集眾牛人之長吧。也可能是我見識比較淺薄,適應(yīng)了自己的代碼風格,井底之蛙了,總之還是懷著敬畏的心情開始咱的源碼之旅吧。本人菜鳥,大神輕拍。

Mysql可以啟動起來了,應(yīng)該怎么學(xué)習(xí)呢?總不能從main開始一步一步的看吧,Mysql作為比較底層的大型軟件,涉及到數(shù)據(jù)庫實現(xiàn)的方方面面,沒有厚實的數(shù)據(jù)庫理論基礎(chǔ)和對Mysql各個模塊相當?shù)氖煜ぃ瑥膍ain開始勢必會把自己引入某個死胡同啊,什么都看,最后啥也不會,咱傷不起。

經(jīng)過思考后,我想還是通過客戶端來調(diào)試服務(wù)器,從而學(xué)習(xí)服務(wù)器代碼比較現(xiàn)實。也就是通過客戶端的動作,看服務(wù)器的反應(yīng)。比如從客戶端的登錄動作來看SERVER如何進行通信、用戶識別、鑒定以及任務(wù)分配的,通過CREATE TABLE,來看SERVER如何解析DDL語句以及針對不同的存儲引擎采取的不同的物理存儲方式,通過INSERT語句,來看SERVER如何進行Btree的操作。通過SELECT語句來看如何進行SQL語句語法樹的創(chuàng)建和優(yōu)化的,通過ROLL BACK,來看SERVER事務(wù)是如何實現(xiàn)的。這里主要是通過跟蹤代碼學(xué)習(xí)Mysql數(shù)據(jù)庫實現(xiàn)的思想,對于具體的代碼不去做過多的追究(主要是我對C++不是很熟悉),好讀書,不求甚解,呵呵。

由此,暫時準備了以下幾條SQL語句,來有針對的進行SERVER的分析

  1. 1、LOGIN(登錄)   
  2. mysql.exe –uroot –p  
  3. 2、DDL(建表語句)  
  4. create table tb_myisam(c1 int, c2 varchar(256)) engine = myisam;  
  5. create table tb_innodb(c1 int, c2 varchar(256)) engine = innodb;  
  6. 3、INSERT 
  7. Insert into tb_myisam values(1 , ’寂寞的肥肉’);  
  8. Insert into tb_innodb values(1 , ’寂寞的肥肉’);  
  9. 4、SELECT 
  10. Select c1 from tb_myisam;  
  11. Select * from tb_innodb;  
  12. 5、ROLLBACK 

大家都知道,mysql可以通過多個客戶端,進行并發(fā)操作,當然也包括登錄了。在別人登錄的時候,其他的用戶可能正在進行一些其它的操作,因此對于登錄我們猜測應(yīng)該有專門的線程負責客戶端和服務(wù)器的連接的創(chuàng)建,以保證登錄的及時性,對于每個連接的用戶,應(yīng)該用一個獨立的線程進行任務(wù)的執(zhí)行。

首先介紹下mysql中創(chuàng)建線程的函數(shù),創(chuàng)建線程的函數(shù)貌似就是_begin_thread,CreateThread,我們通過VS在整個解決方案中進行查找,bingo!在my_winthread.c中找到了調(diào)用_begin_thread的函數(shù)pthread_create,在os0thread.c中找到了調(diào)用CreateThread的函數(shù)os_thread_create,一個系統(tǒng)怎么封裝兩個系統(tǒng)函數(shù)呢??再仔細看下,發(fā)現(xiàn)my_winthread.c是在項目mysys下,而os0thread.c是在項目innobase下。innobase!!這不就是innodb的插件式存儲引擎么,原來這是存儲引擎自己的封裝的底層函數(shù),哥心中豁然開朗了。我想Mysql應(yīng)用范圍如此之廣,除了開源之外,插件式的存儲引擎功不可沒啊,用戶可以根據(jù)自己的實際應(yīng)用采取不同的存儲引擎,對于大公司,估計會開發(fā)自己的存儲引擎。

下面分析下pthread_create是如何調(diào)用_begin_thread的,先粗略看下源碼。

  1. int pthread_create(pthread_t *thread_id, pthread_attr_t *attr,  
  2.    pthread_handler func, void *param)  
  3. {  
  4.   HANDLE hThread;  
  5.   struct pthread_map *map;  
  6.   DBUG_ENTER("pthread_create");  
  7.   if (!(map=malloc(sizeof(*map))))  
  8.     DBUG_RETURN(-1);  
  9.   map->func=func;  
  10.   map->param=param;  
  11.   pthread_mutex_lock(&THR_LOCK_thread);  
  12. #ifdef __BORLANDC__  
  13.   hThread=(HANDLE)_beginthread((void(_USERENTRY *)(void *)) pthread_start,  
  14.                    attr->dwStackSize ? attr->dwStackSize :  
  15.                    65535, (void*) map);  
  16. #else 
  17.   hThread=(HANDLE)_beginthread((void( __cdecl *)(void *)) pthread_start,  
  18.                    attr->dwStackSize ? attr->dwStackSize :  
  19.                    65535, (void*) map);  
  20. #endif  
  21.   DBUG_PRINT("info", ("hThread=%lu",(long) hThread));  
  22.   *thread_id=map->pthreadself=hThread;  
  23.   pthread_mutex_unlock(&THR_LOCK_thread);  
  24.   if (hThread == (HANDLE) -1)  
  25.   {  
  26.     int error=errno;  
  27.     DBUG_PRINT("error",  
  28.            ("Can't create thread to handle request (error %d)",error));  
  29.     DBUG_RETURN(error ? error : -1);  
  30.   }  
  31.   VOID(SetThreadPriority(hThread, attr->priority)) ;  
  32.   DBUG_RETURN(0);  
  33. }  

關(guān)鍵的代碼是下面三句:

  1. map->func=func;  
  2. map->param=param;  
  3. _beginthread((void( __cdecl *)(void *)) pthread_start,  
  4.                    attr->dwStackSize ? attr->dwStackSize :  
  5.                    65535, (void*) map);  

從這可以看出,創(chuàng)建的新線程的名字是個固定的函數(shù)——pthread_start,而我們傳進來的想創(chuàng)建的函數(shù)func是掛載在了map上了,函數(shù)的參數(shù)同樣的掛載在map上了,這樣我們就可以推理出在pthread_start函數(shù)中,肯定會出現(xiàn)這樣的代碼:

  1. map->func(map->param); 

mysql沒有選擇直接_beginthread(func, stack_size, param)的形式,而是進行了一次封裝,不知道這樣的好處是什么,可能牛人的思想不是我這樣小菜鳥能頓悟的,跑題了~~

至此,我們只在pthread_create函數(shù)上設(shè)置斷點,調(diào)試啟動mysqld,斷點停下來,看下系統(tǒng)的線程狀況:

我們第一次進入pthread_create,任何線程都沒開始創(chuàng)建呢,按理說系統(tǒng)線程應(yīng)該就只有一個主線程,可現(xiàn)在多了這么多,這些應(yīng)該是innodb存儲引擎創(chuàng)建的線程了(具體是在plugin_init)。根據(jù)線程的名稱,結(jié)合注釋,猜測了下這些線程的作用。

 Io_handler_thread:從名稱可以知道這些是I/O線程,負責進行磁盤I/O。

   Svr_error_monitor_thread:應(yīng)該是服務(wù)器出錯監(jiān)控線程。

   Svr_lock_timeout_thread:應(yīng)該是和上鎖相關(guān)的線程。

   Svr_master_thread:

/*************************************************************************

The master thread controlling the server. */

   服務(wù)器控制線程,應(yīng)該是具體進行作業(yè)的線程。

   Svr_monitor_thread:

/*************************************************************************

A thread prints the info output by various InnoDB monitors. */

   監(jiān)控線程,負責打印信息。

淡然飄過吧,不去細究了,我們只關(guān)心pthread_create創(chuàng)建的線程。根據(jù)調(diào)試,發(fā)現(xiàn)多了幾個線程同名的線程_threadstart,如下所示:

調(diào)試時看堆棧可以知道這三個線程的創(chuàng)建者和作用,如下所示

創(chuàng)建者 處理函數(shù)
create_shutdown_thread handle_shutdown
start_handle_manager  handle_manager
handle_connections_methods  handle_connections_sockets

創(chuàng)建者:調(diào)用pthread_create進行創(chuàng)建線程的函數(shù)。

處理函數(shù):調(diào)用pthread_create所創(chuàng)建的線程的具體的線程函數(shù)。

由名稱我們就可以看出,handle_connections_sockets應(yīng)該是處理連接的線程了,從順序上看,也應(yīng)該是這樣,只有系統(tǒng)中所有的其他必須的線程創(chuàng)建完畢后,才能創(chuàng)建監(jiān)聽線程(連接線程),即監(jiān)聽線程應(yīng)該是系統(tǒng)最后創(chuàng)建的。

找到了我們LOGIN需要的線程了,下次針對這個線程,分析下如何進行登錄的,以及登錄后為用戶分配哪些資源。時間不早啦,洗洗睡了

原文鏈接:http://www.cnblogs.com/nocode/archive/2011/04/21/2024330.html

【編輯推薦】

  1. 這些事項你注意了嗎? 淺談數(shù)據(jù)庫優(yōu)化注意事項
  2. 手把手教你實現(xiàn)MySQL雙機數(shù)據(jù)同步
  3. MySQL VS SQL Server之用法差別
  4. 微博 請問你是怎么優(yōu)化數(shù)據(jù)庫的?
責任編輯:艾婧 來源: 博客園
相關(guān)推薦

2022-02-14 10:16:22

Axios接口HTTP

2018-07-31 14:49:45

編程語言Java源碼

2022-02-02 21:17:19

Eslint字段配置

2023-06-26 15:14:19

WebGL紋理對象學(xué)習(xí)

2021-05-19 10:37:16

WebFlux 前置工具

2023-07-11 08:34:25

參數(shù)流程類型

2021-11-26 09:44:42

鏈表節(jié)點定位

2022-12-01 09:59:57

內(nèi)核觀測性方法

2021-05-20 07:15:34

RSA-PSS算法簽名

2023-03-28 07:32:37

2023-03-26 12:45:52

Linux內(nèi)核頭文件

2024-02-23 10:25:33

Kubernetes自動擴縮容工作負載

2018-05-22 14:34:50

編譯Linux內(nèi)核

2024-09-11 09:25:00

2021-12-14 07:40:07

多線程面試CPU

2024-12-10 00:00:25

2023-10-31 09:04:21

CPU調(diào)度Java

2025-02-28 08:46:24

框架微服務(wù)架構(gòu)

2021-10-27 06:49:34

線程池Core函數(shù)

2024-06-04 07:52:04

點贊
收藏

51CTO技術(shù)棧公眾號

欧妇女乱妇女乱视频| 国产精品第3页| 国产精品一区二区在线免费观看| 超碰97免费在线| 26uuu成人网一区二区三区| 国产成人综合久久| 亚洲av鲁丝一区二区三区| 欧美绝顶高潮抽搐喷水合集| 在线国产电影不卡| 激情六月天婷婷| 狠狠v欧美ⅴ日韩v亚洲v大胸| 久久99精品一区二区三区三区| 精品中文字幕在线| 久久久久亚洲av成人无码电影| 电影中文字幕一区二区| 日韩人体视频一二区| 欧美日韩视频免费在线观看| 无套内谢的新婚少妇国语播放| 蜜臀va亚洲va欧美va天堂| 欧美激情第99页| 日本黄色小视频在线观看| 国产一区二区三区亚洲| 欧美日韩1234| 蜜臀av午夜一区二区三区| 91亚洲天堂| 国产欧美精品国产国产专区| 成人欧美一区二区三区黑人免费| 在线观看国产精品视频| 亚洲永久字幕| 久久人人爽国产| 国产精品国产精品88| 激情五月色综合国产精品| 亚洲成人精品久久| 性鲍视频在线观看| 欧美国产视频| 欧美性受极品xxxx喷水| 欧美三级一级片| 久色国产在线| 一区二区三区中文在线观看| 一区二区三区四区| 国产视频精品久久| 久久女同精品一区二区| 国产精品久久久久久久久婷婷 | 国产在线观看一区二区三区| 免费观看一区二区三区毛片| 欧美视频网站| 欧美情侣性视频| 18岁成人毛片| 亚洲成人99| 精品国产欧美一区二区三区成人| www..com.cn蕾丝视频在线观看免费版 | 国产精品v亚洲精品v日韩精品| 在线观看欧美成人| 美女爆乳18禁www久久久久久 | 精品一区二区三区四区| 伊人久久一区二区三区| www国产精品| 亚洲国产精品久久久久久| 少妇高潮一69aⅹ| 日韩一级淫片| 亚洲国产成人精品久久久国产成人一区| 久久久国产精品久久久| 日本成人精品| 亚洲第一中文字幕在线观看| 日韩少妇一区二区| 青青一区二区| 国产一区二区三区丝袜| 亚洲自拍偷拍图| 日韩电影二区| 久久精品视频亚洲| 欧美精品xxxxx| 在线国产精品一区| 97不卡在线视频| 无码人妻av免费一区二区三区| 丝袜美腿亚洲色图| 国产精品免费在线免费 | 国内外成人在线视频| 亚洲xxx视频| 人人妻人人澡人人爽精品日本| 99久久婷婷国产综合精品电影 | 麻豆tv入口在线看| 亚洲综合一区二区三区| 精品无码一区二区三区在线| 国产精品专区免费| 欧美日韩一二三区| 欧美69精品久久久久久不卡| 同性恋视频一区| 中文字幕精品一区二区精品| 欧美人妻精品一区二区免费看| 在线成人av| 国产精品一区二区电影| www.日韩在线观看| 91蜜桃免费观看视频| 午夜精品短视频| 免费在线看污片| 91久久精品网| 日本wwwxx| 国产精品欧美日韩一区| 另类色图亚洲色图| 可以免费在线观看的av| 青娱乐精品在线视频| av资源一区二区| 经典三级在线| 亚洲一区二区三区精品在线| 激情综合网俺也去| 伊人www22综合色| 亚洲欧美日本另类| 免费在线观看黄视频| 久久亚洲影院| 国产精品区一区二区三含羞草| eeuss影院www在线播放| 亚洲第一av色| 久久久久久久久久毛片| 精品一区毛片| 欧美—级a级欧美特级ar全黄| 中文字幕91爱爱| 99热精品一区二区| 妞干网这里只有精品| 深夜视频一区二区| 亚洲第一av网站| 侵犯稚嫩小箩莉h文系列小说| 丝袜a∨在线一区二区三区不卡| 亚洲一区二区久久久久久久| 国产福利电影在线| 午夜亚洲国产au精品一区二区 | 成人福利视频网站| 香蕉精品视频在线| 国产成人免费9x9x人网站视频 | 日本国产一区二区| 秘密基地免费观看完整版中文 | 国内精久久久久久久久久人| 影音先锋国产在线| 久久久精品综合| 久久精品视频16| 97久久综合区小说区图片区| 久久国产精品首页| 97精品人妻一区二区三区香蕉| 久久精品视频一区二区| 国产极品粉嫩福利姬萌白酱 | 亚洲缚视频在线观看| 成人免费视频国产免费观看| 美女视频一区二区| 亚洲第一在线综合在线| 欧美日韩在线精品一区二区三区激情综合| 欧美精品一区二区在线播放| 久久久久久久国产视频| 国产老肥熟一区二区三区| 中文字幕一区综合| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 伦av综合一区| 久久天天做天天爱综合色| 日韩欧美一区三区| 美女一区2区| 欧美一乱一性一交一视频| 婷婷视频在线观看| 欧美日韩另类字幕中文| 在线 丝袜 欧美 日韩 制服| 亚洲在线视频| 日本a级片久久久| 日韩色淫视频| 日韩亚洲综合在线| 国产区精品在线| 亚洲精品午夜久久久| 中文字幕乱码在线人视频| 欧美日韩一区自拍 | 欧美一级小视频| 我不卡影院28| 不卡视频一区二区| 99热99re6国产在线播放| 亚洲国产精品久久久久秋霞蜜臀| av大片免费观看| 91视视频在线观看入口直接观看www | 欧美日韩一级视频| 日本aⅴ在线观看| 成人午夜av在线| 亚洲国产精品久久久久爰色欲| 久久不见久久见免费视频7| 国产福利视频一区| 国产一二区在线观看| 日韩欧美在线影院| 久久青青草视频| 国产精品视频一区二区三区不卡| 亚洲18在线看污www麻豆| 欧美日韩精品| 欧美日韩国产不卡在线看| 精品亚洲a∨| 国内偷自视频区视频综合| 精品乱码一区二区三四区视频 | 亚洲自拍高清视频网站| 国产社区精品视频| 国产午夜精品一区二区三区| 国产美女www爽爽爽视频| 五月激情综合网| 久久精品日韩无码| 成人福利电影精品一区二区在线观看| 欧美精品色婷婷五月综合| 天天色天天射综合网| 精品在线观看一区二区| 99er精品视频| 琪琪第一精品导航| 午夜伦理大片视频在线观看| 亚洲欧美第一页| 亚洲成人久久精品| 欧美伊人久久大香线蕉综合69| 欧美黄色免费看| 国产精品私房写真福利视频| 国产二级一片内射视频播放 | 国内久久精品| 亚洲精品欧洲精品| 丝袜连裤袜欧美激情日韩| 国产日本欧美一区二区三区| 精品极品在线| 蜜月aⅴ免费一区二区三区 | 国产aⅴ一区二区三区| 大桥未久av一区二区三区| 91嫩草丨国产丨精品| 国产网站一区二区三区| 国产十八熟妇av成人一区| 久国产精品韩国三级视频| 各处沟厕大尺度偷拍女厕嘘嘘| 欧美99久久| 日本婷婷久久久久久久久一区二区| 成人三级毛片| 亚洲一区二区三区乱码aⅴ| 高清av一区二区三区| 欧美一级电影久久| heyzo高清国产精品| 久久亚洲精品网站| 自拍视频在线播放| 亚洲欧美日韩久久久久久 | 欧美黄色一级| 91精品国产综合久久男男| 黑人巨大精品欧美一区二区桃花岛| 欧美高清一级大片| 五月婷婷视频在线观看| 久久手机精品视频| 免费av不卡| 日韩中文字在线| 国产精品一二三区视频| 亚洲欧美日本另类| 日本黄在线观看| 亚洲欧洲在线看| 青青草在线免费视频| 日韩电影中文 亚洲精品乱码| 丰满熟女一区二区三区| 日韩欧美一级精品久久| 国产欧美一区二区三区视频在线观看| 欧美乱妇15p| 亚洲无码精品在线观看| 欧美视频三区在线播放| 国产偷人爽久久久久久老妇app | 亚洲人一二三区| 波多野结衣爱爱视频| 亚洲免费在线视频一区 二区| 裸体武打性艳史| 一区二区三区四区五区视频在线观看| 国产1区2区3区4区| 亚洲成人自拍偷拍| 日韩欧美一区二区一幕| 欧美丝袜第一区| 国产99免费视频| 欧美日韩在线亚洲一区蜜芽| 国产女主播福利| 精品999久久久| 头脑特工队2在线播放| 亚洲精品中文字| 番号集在线观看| 久久久国产91| 国产后进白嫩翘臀在线观看视频 | 97av中文字幕| 国产精品综合| 中文字幕一区二区三区四区在线视频| 老司机免费视频一区二区| 亚洲五月激情网| 99精品桃花视频在线观看| 91资源在线播放| 一区二区三区在线观看国产| 日韩成人在线免费视频| 色国产精品一区在线观看| 亚洲一区 中文字幕| 日韩欧美综合在线| 日本大片在线观看| 深夜福利亚洲导航| 免费网站在线观看人| 青青草一区二区| 精品国产鲁一鲁****| 精品久久久久久一区| 日本午夜一区| 人妻互换免费中文字幕| 羞羞视频在线观看欧美| 亚洲va在线va天堂va偷拍| 成人精品高清在线| 五月天精品在线| 午夜欧美一区二区三区在线播放| 在线观看你懂的网站| 日韩一区二区麻豆国产| 酒色婷婷桃色成人免费av网| 欧美成人午夜剧场免费观看| 成人欧美一区二区三区的电影| 成人日韩在线电影| 日韩欧美国产大片| 樱空桃在线播放| 久久精品盗摄| 国产chinesehd精品露脸| 国产日韩v精品一区二区| 国产亚洲精品久久久久久无几年桃 | 在线观看日韩欧美| av老司机在线观看| 成人av在线亚洲| 亚洲成aⅴ人片久久青草影院| youjizz.com亚洲| 久久久夜夜夜| 欧美激情一区二区三区p站| 国产精品成人免费| 69国产精品视频免费观看| 日韩欧美成人激情| 日韩大片在线永久免费观看网站| 欧美亚洲在线视频| av综合网页| 日韩视频一二三| 麻豆国产精品777777在线| 无码熟妇人妻av| 亚洲18色成人| 亚洲乱码精品久久久久..| 久久精品视频中文字幕| 天堂久久午夜av| 麻豆成人小视频| 亚洲美女一区| 日本美女视频网站| 亚洲免费观看高清完整| 91久久精品国产91性色69| 一区二区三区在线播放欧美| 中文字幕这里只有精品| 成人毛片网站| 午夜精品国产| 妖精视频在线观看| 亚洲精品高清在线观看| 国产女人18毛片水真多| 色偷偷av一区二区三区| 国产第一精品| 亚洲a∨一区二区三区| 日韩黄色一级片| 中文字幕免费高清| 色av成人天堂桃色av| 美国成人毛片| 国产福利精品av综合导导航| 欧美伦理在线视频| 在线视频日韩一区| 国产欧美日韩综合| 中文字幕 欧美激情| 色先锋资源久久综合5566| 国产福利亚洲| 青少年xxxxx性开放hg| 狠狠色丁香婷婷综合| 九九热最新地址| 欧美r级在线观看| www.51av欧美视频| 欧美日韩喷水| 奇米777欧美一区二区| 日韩一卡二卡在线观看| 欧美一区二区播放| sis001亚洲原创区| 久久国产精品久久| 日韩精品一级二级| sm捆绑调教视频| 日韩欧美一区中文| www在线观看黄色| 日本在线高清视频一区| 麻豆91精品91久久久的内涵| 中国一级片在线观看| 精品久久一区二区三区| 筱崎爱全乳无删减在线观看| 天堂√在线观看一区二区| 精品一区二区影视| 久久这里只有精品免费| 精品在线小视频| 国产精品第一| 亚洲乱码日产精品bd在线观看| 97精品国产97久久久久久久久久久久| 久久久久在线视频| 久久久精品2019中文字幕神马| 粉嫩av一区二区| 日韩精品无码一区二区三区免费| 国产精品高潮久久久久无| 国产福利第一页| 55夜色66夜色国产精品视频| 久久在线视频| 亚洲婷婷在线观看| 欧美在线999| 日本一级理论片在线大全| 免费试看一区| 狠狠色丁香久久婷婷综合丁香| 黄网在线观看视频| www国产精品视频| 伦理一区二区三区| 午夜免费一级片| 91搞黄在线观看| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美一级二级三级| 粉嫩aⅴ一区二区三区四区五区|