1. 程式人生 > >MySQL原始碼分析及核心內幕之1 -- 原始碼目錄結構

MySQL原始碼分析及核心內幕之1 -- 原始碼目錄結構

        一直以來都在使用MySQL來做資料庫開發,但是MySQL底層是如何實現大資料量的儲存對我來說一直是個未知數,並且現在很多公司都會使用MySQL來作為後端資料儲存工具,其簡單強大的特點深受廣大公司青睞。現在在公司開始接觸效能優化方面的任務,由於MySQL資料量已經很龐大,單表資料量已達數千萬,有些甚至是億級的資料量,這樣給查詢帶來了很大的挑戰,經常有502的問題出現,資料庫查詢壓力不斷上升,甚至最近發現偶爾會有資料丟失的現象,這激起了我研究MySQL原始碼及其底層實現的興趣,所以打算花一段時間來好好研究。到底MySQL是如何工作的呢,由於自己能力及時間精力有限,研究得不一定對,歡迎大家吐槽。

       本次研究的MySQL的原始碼版本為mysql-5.5.22.tar.gz,因為之前安裝過該版本,所以就使用其來研究。

       其原始碼目錄結構如下:

[[email protected] mysql-5.5.22]$ ls
BUILD           configure.cmake  INSTALL-WIN-SOURCE  mysql-test  sql            unittest
BUILD-CMAKE     COPYING          libmysql            mysys       sql-bench      VERSION
client          dbug             libmysqld           packaging   sql-common     vio
cmake           Docs             libservices         plugin      storage        win
CMakeLists.txt  extra            man                 README      strings        zlib
cmd-line-utils  include          mycnf               regex       support-files
config.h.cmake  INSTALL-SOURCE   mysql_start.sh      scripts     tests

     原始碼目錄結構說明(版本不一樣目錄結構可能也不太一樣):

  1. BUILD:編譯和安裝指令碼目錄,編譯配置併為所有被支援的平臺製作檔案,內含在各個平臺、各種編譯器下進行編譯和連結的指令碼。
  2. client:客戶端工具,內含mysql,mysqladmin,mysqlshow等常用命令和客戶端工具的原始碼。
  3. storage儲存引擎目錄,各類儲存引擎程式碼都在這個目錄中。
  4. mysysmysys代表MySQL system library,MySQL的庫函式檔案。
  5. sqlmysql主要程式碼,將會生成mysqld檔案。
  6. vio:  Virtual I/O系統,是對network io
    的封裝,主要用來處理各種網路協議的IO。
  7. stringsstring庫,各種字串處理操作函式。
  8. include包含的標頭檔案
  9. packaging打包工具包。
  10. support-filesmy.cnf示例配置檔案,安裝完MySQL後,一般MySQL的啟動檔案也會放到該目錄下。
  11. pluginmysql以外掛形式實現的部分工程。
  12. tests測試檔案所在目錄,包含測試檔案和測試目錄。
  13. libmysql庫檔案,將生產libmysqlclient.so。
  14. README:說明文件。
  15. unittest:單元測試。
  16. regex正則表示式工具 。
  17. VERSION:版本資訊
  18. dbug:提供一些除錯用的巨集定義。
  19. libservices:5.5.x中新加的目錄,實現了列印功能。
  20. scripts提供指令碼工具,如mysql_install_db等。
  21. Docs文件庫。
  22. extra:提供innochecksum,resolveip等額外的小工具。
  23. sql-bench:一些測評程式碼。
  24. winwindows平臺提供的編譯環境。
  25. cmd-line-utilsreadline,libedit工具。
  26. man手冊頁。
  27. sql-common存放部分伺服器端和客戶端都會用到的程式碼。
  28. zlibzip庫工具。
  29. mysql-testmysqld的測試工具箱。

       其中,比較核心的程式碼儲存在前面8個目錄下。

相關推薦

MySQL原始碼分析核心內幕1 -- 原始碼目錄結構

        一直以來都在使用MySQL來做資料庫開發,但是MySQL底層是如何實現大資料量的儲存對我來說一直是個未知數,並且現在很多公司都會使用MySQL來作為後端資料儲存工具,其簡單強大的特點深受廣大公司青睞。現在在公司開始接觸效能優化方面的任務,由於MySQL資料量

Kafka原始碼分析圖解原理Producer端

一.前言   任何訊息佇列都是萬變不離其宗都是3部分,訊息生產者(Producer)、訊息消費者(Consumer)和服務載體(在Kafka中用Broker指代)。那麼本篇主要講解Producer端,會有適當的圖解幫助理解底層原理。   一.開發應用   首先介紹一下開發應用,如何構建一個KafkaP

Kafka原始碼分析圖解原理Broker端

一.前言   https://www.cnblogs.com/GrimMjx/p/11354987.html   上一節說過,任何訊息佇列都是萬變不離其宗都是3部分,訊息生產者(Producer)、訊息消費者(Consumer)和服務載體(在Kafka中用Broker指代)。上一節講了kafka prod

【kubernetes/k8s原始碼分析】 controller-managerreplicaset原始碼分析

ReplicaSet簡介     Kubernetes 中建議使用 ReplicaSet來取代 ReplicationController。ReplicaSet 跟 ReplicationController 沒有本質的不同, ReplicaSet 支援集合式的

javaIO(1):OutputStream和FileOutputStream原始碼分析“裝飾者模式”在IO中的應用

前言 一,IO體系 從現在起,我們將基於JDK1.8詳細介紹java.io包中的關於輸入輸出有關的類。瞭解過這個包的都知道,裡面的類繼承關係錯綜複雜,光是弄清楚這些類的關係就夠喝一壺的了。說實話,我也沒有什麼好的方法來一下子就能弄清這些類,但是如果你瞭解“裝

《深入理解Spark:核心思想與原始碼分析》(前言及第1章)

  自己犧牲了7個月的週末和下班空閒時間,通過研究Spark原始碼和原理,總結整理的《深入理解Spark:核心思想與原始碼分析》一書現在已經正式出版上市,目前亞馬遜、京東、噹噹、天貓等網站均有銷售,歡迎感興趣的同學購買。我開始研究原始碼時的Spark版本是1.2.0,經過7個多月的研究和出版社近4個月的流

yii1.1核心原始碼分析1目錄結構說明

framework框架核心庫 1.base底層類庫資料夾包括CApplication:(應用類,負責全域性的使用者請求處理,它管理的應用元件集,將提供特定功能給整個應用程式);CComponent(元

《深入理解Spark-核心思想與原始碼分析》讀書筆記(1

前兩章 第一章主要是講如何安裝和配置spark,以及如何匯入spark原始碼除錯執行;第二章主要講的是上次那本書《Spark快速大資料分析》的內容,科普一下spark的知識。 第三章 SparkContext的初始化 1. 概述 這章的主要內容就

搞懂ZooKeeper的Watcher原始碼分析特性總結

前言   本章講ZooKeeper重要的機制,Watcher特性。ZooKeeper允許客戶端向服務端註冊Watcher監聽,當服務端一些指定事件觸發了這個Watcher,那麼就會向指定客戶端傳送一個事件通知客戶端執行回撥邏輯   一.Watcher機制   ZooKeeper允許客戶端向服

【原創】Linux虛擬化KVM-Qemu分析(三)KVM原始碼1

# 背景 - `Read the fucking source code!` --By 魯迅 - `A picture is worth a thousand words.` --By 高爾基 說明: 1. KVM版本:5.9.1 2. QEMU版本:5.0.0 3. 工具:Source Insight

【外貿推廣科普】主流外貿推廣渠道優缺點分析實操展會推廣

外貿推廣 外貿推廣渠道 展會推廣 國內外每年都有很多展會,在前文講到的那些B2B/B2C平臺還沒出來的時候,參加外貿展會是當時最有效的外貿推廣方式了,通過展會直接成交的快感在當時很多外貿人都有享受過。而且展會對於打造品牌有著先天的優勢,即使現在參展的效果不理想,但對很多企業來說,想在海外提

【外貿推廣科普】主流外貿推廣渠道優缺點分析實操平臺推廣

外貿推廣 外貿推廣渠道 平臺推廣 B2B B2C 外貿推廣,也就是海外推廣的渠道有很多,比較主流的有6種:1、B2B/B2C平臺推廣(B2B如阿裏國際站、made in china等(國外B2B請看最全外貿B2B平臺列表),B2C如速賣通、亞馬遜等) B2B平臺推廣是外貿推廣渠道中眾所周知

OpenCV學習筆記(31)KAZE 演算法原理與原始碼分析(五)KAZE的原始碼優化與SIFT的比較

  KAZE系列筆記: 1.  OpenCV學習筆記(27)KAZE 演算法原理與原始碼分析(一)非線性擴散濾波 2.  OpenCV學習筆記(28)KAZE 演算法原理與原始碼分析(二)非線性尺度空間構建 3.  Op

Android系統原始碼分析--View繪製流程-setContentView

上一篇分析了四大元件之ContentProvider,這也是四大元件最後一個。因此,從這篇開始我們分析新的篇章--View繪製流程,View繪製流程在Android開發中佔有非常重要的位置,只要有檢視的顯示,都離不開View的繪製,所以瞭解View繪製原理對於應用開發以及系統的學習至關重要。由於View

ndroid系統原始碼分析--View繪製流程-inflate

上一章我們分析了Activity啟動的時候呼叫setContentView載入佈局的過程,但是分析過程中我們留了兩個懸念,一個是將資原始檔中的layout中xml佈局檔案通過inflate載入到Activity中的過程,另一個是開始測量、佈局和繪製的過程,第二個我們放到measure過程中分析,這一篇先

spring-boot-admin原始碼分析單機監控spring-boot-monitor的實現(三)

SpringBootMonitor spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一) spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二)

spring-boot-admin原始碼分析單機監控spring-boot-monitor的實現(二)

SpringBootMonitor spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一) spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二)

spring-boot-admin原始碼分析單機監控spring-boot-monitor的實現(一)

SpringBootMonitor spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一) spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二) spring-boot-ad

Java併發包中Semaphore的工作原理、原始碼分析使用示例

簡介: 在多執行緒程式設計中有三個同步工具需要我們掌握,分別是Semaphore(訊號量),countDownLatch(倒計數門閘鎖),CyclicBarrier(可重用柵欄) 歡迎探討,如有錯誤敬請指正 如需轉載,請註明出處 http://www.cnblogs.com/n

tornado原始碼分析(二)iostream

在事件驅動模型中,所有任務都是以某個事件的回撥函式的方式新增至事件迴圈中的,如:HTTPServer要從socket中讀取客戶端傳送的request訊息,就必須將該socket新增至ioloop中,並設定回掉函式,在回掉函式中從socket中讀取資料,並且檢查request訊息是否全部接收到了,如果