|
安裝完Mysql后,使用VS打開源碼開開眼,我嘞個去,這代碼和想象中怎么差別這么大呢?感覺代碼有些凌亂,注釋代碼都寫的比較隨意,好像沒有什么統一的規范,不同的文件中代碼風格也有差異,可能Mysql經過了很多牛人的手之后,集眾牛人之長吧。也可能是我見識比較淺薄,適應了自己的代碼風格,井底之蛙了,總之還是懷著敬畏的心情開始咱的源碼之旅吧。本人菜鳥,大神輕拍。
Mysql可以啟動起來了,應該怎么學習呢?總不能從main開始一步一步的看吧,Mysql作為比較底層的大型軟件,涉及到數據庫實現的方方面面,沒有厚實的數據庫理論基礎和對Mysql各個模塊相當的熟悉,從main開始勢必會把自己引入某個死胡同啊,什么都看,最后啥也不會,咱傷不起。
經過思考后,我想還是通過客戶端來調試服務器,從而學習服務器代碼比較現實。也就是通過客戶端的動作,看服務器的反應。比如從客戶端的登錄動作來看SERVER如何進行通信、用戶識別、鑒定以及任務分配的,通過CREATE TABLE,來看SERVER如何解析DDL語句以及針對不同的存儲引擎采取的不同的物理存儲方式,通過INSERT語句,來看SERVER如何進行Btree的操作。通過SELECT語句來看如何進行SQL語句語法樹的創建和優化的,通過ROLL BACK,來看SERVER事務是如何實現的。這里主要是通過跟蹤代碼學習Mysql數據庫實現的思想,對于具體的代碼不去做過多的追究(主要是我對C++不是很熟悉),好讀書,不求甚解,呵呵。
由此,暫時準備了以下幾條SQL語句,來有針對的進行SERVER的分析。
1、 LOGIN(登錄)
mysql.exe –uroot –p
2、 DDL(建表語句)
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知識庫:MySQL源碼學習筆記——偷窺線程,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。