|
安裝完Mysql后,使用VS打開(kāi)源碼開(kāi)開(kāi)眼,我嘞個(gè)去,這代碼和想象中怎么差別這么大呢?感覺(jué)代碼有些凌亂,注釋代碼都寫(xiě)的比較隨意,好像沒(méi)有什么統(tǒng)一的規(guī)范,不同的文件中代碼風(fēng)格也有差異,可能Mysql經(jīng)過(guò)了很多牛人的手之后,集眾牛人之長(zhǎng)吧。也可能是我見(jiàn)識(shí)比較淺薄,適應(yīng)了自己的代碼風(fēng)格,井底之蛙了,總之還是懷著敬畏的心情開(kāi)始咱的源碼之旅吧。本人菜鳥(niǎo),大神輕拍。
Mysql可以啟動(dòng)起來(lái)了,應(yīng)該怎么學(xué)習(xí)呢?總不能從main開(kāi)始一步一步的看吧,Mysql作為比較底層的大型軟件,涉及到數(shù)據(jù)庫(kù)實(shí)現(xiàn)的方方面面,沒(méi)有厚實(shí)的數(shù)據(jù)庫(kù)理論基礎(chǔ)和對(duì)Mysql各個(gè)模塊相當(dāng)?shù)氖煜ぃ瑥膍ain開(kāi)始勢(shì)必會(huì)把自己引入某個(gè)死胡同啊,什么都看,最后啥也不會(huì),咱傷不起。
經(jīng)過(guò)思考后,我想還是通過(guò)客戶端來(lái)調(diào)試服務(wù)器,從而學(xué)習(xí)服務(wù)器代碼比較現(xiàn)實(shí)。也就是通過(guò)客戶端的動(dòng)作,看服務(wù)器的反應(yīng)。比如從客戶端的登錄動(dòng)作來(lái)看SERVER如何進(jìn)行通信、用戶識(shí)別、鑒定以及任務(wù)分配的,通過(guò)CREATE TABLE,來(lái)看SERVER如何解析DDL語(yǔ)句以及針對(duì)不同的存儲(chǔ)引擎采取的不同的物理存儲(chǔ)方式,通過(guò)INSERT語(yǔ)句,來(lái)看SERVER如何進(jìn)行Btree的操作。通過(guò)SELECT語(yǔ)句來(lái)看如何進(jìn)行SQL語(yǔ)句語(yǔ)法樹(shù)的創(chuàng)建和優(yōu)化的,通過(guò)ROLL BACK,來(lái)看SERVER事務(wù)是如何實(shí)現(xiàn)的。這里主要是通過(guò)跟蹤代碼學(xué)習(xí)Mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)的思想,對(duì)于具體的代碼不去做過(guò)多的追究(主要是我對(duì)C++不是很熟悉),好讀書(shū),不求甚解,呵呵。
由此,暫時(shí)準(zhǔn)備了以下幾條SQL語(yǔ)句,來(lái)有針對(duì)的進(jìn)行SERVER的分析。
1、 LOGIN(登錄)
mysql.exe –uroot –p
2、 DDL(建表語(yǔ)句)
create table tb_myisam(c1 int, c2 varchar(256)) engine = myisam;
create table tb_innodb(c1 int, c2 varchar(256)) engine = innodb;
3、 INSERT
Insert into tb_myisam values(1 , ’寂寞的肥肉’);
Insert into tb_innodb values(1 , ’寂寞的肥肉’);
4、 SELECT
Select c1 from tb_myisam;
Select * from tb_innodb;
5、 ROLLBACK
it知識(shí)庫(kù):MySQL源碼學(xué)習(xí)筆記——偷窺線程,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。