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
原始碼目錄結構說明(版本不一樣目錄結構可能也不太一樣):
- BUILD:編譯和安裝指令碼目錄,編譯配置併為所有被支援的平臺製作檔案,內含在各個平臺、各種編譯器下進行編譯和連結的指令碼。
- client:客戶端工具,內含mysql,mysqladmin,mysqlshow等常用命令和客戶端工具的原始碼。
- storage:儲存引擎目錄,各類儲存引擎程式碼都在這個目錄中。
- mysys:mysys代表MySQL system library,是MySQL的庫函式檔案。
- sql:mysql主要程式碼,將會生成mysqld檔案。
-
vio: Virtual I/O系統,是對network
io
- strings:string庫,各種字串處理操作函式。
- include:包含的標頭檔案
- packaging:打包工具包。
- support-files:my.cnf示例配置檔案,安裝完MySQL後,一般MySQL的啟動檔案也會放到該目錄下。
- plugin:mysql以外掛形式實現的部分工程。
- tests:測試檔案所在目錄,包含測試檔案和測試目錄。
- libmysql:庫檔案,將生產libmysqlclient.so。
- README:說明文件。
- unittest:單元測試。
- regex:正則表示式工具 。
- VERSION:版本資訊。
- dbug:提供一些除錯用的巨集定義。
- libservices:5.5.x中新加的目錄,實現了列印功能。
- scripts:提供指令碼工具,如mysql_install_db等。
- Docs:文件庫。
- extra:提供innochecksum,resolveip等額外的小工具。
- sql-bench:一些測評程式碼。
- win:給windows平臺提供的編譯環境。
- cmd-line-utils:readline,libedit工具。
- man:手冊頁。
- sql-common:存放部分伺服器端和客戶端都會用到的程式碼。
- zlib:zip庫工具。
- mysql-test:mysqld的測試工具箱。
其中,比較核心的程式碼儲存在前面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-manager之replicaset原始碼分析
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訊息是否全部接收到了,如果