導航:首頁 > 源碼編譯 > mysql源碼研究

mysql源碼研究

發布時間:2023-06-19 09:44:39

❶ 如何源碼安裝mysql

方法/步驟

1
[root@localhost soft]# groupadd mysql 添加mysql標准組
[root@localhost soft]# useradd -g mysql mysql 添加mysql用戶並加到mysql組中

2
安裝mysql
[root@localhost soft]# tar -zxvf mysql-5.5.45.tar.gz
[root@localhost mysql-5.5.46]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

# -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安裝路徑
# -DMYSQL_DATADIR=/usr/local/mysql/data \ #數據文件存放位置
# -DSYSCONFDIR=/etc \ #my.cnf路徑
# -DWITH_MYISAM_STORAGE_ENGINE=1 \ #支持MyIASM引擎
# -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #支持InnoDB引擎
# -DWITH_MEMORY_STORAGE_ENGINE=1 \ #支持Memory引擎
# -DWITH_READLINE=1 \ #快捷鍵功能(我沒用過)
# -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ #連接資料庫socket路徑
# -DMYSQL_TCP_PORT=3306 \ #埠
# -DENABLED_LOCAL_INFILE=1 \ #允許從本地導入數據
# -DWITH_PARTITION_STORAGE_ENGINE=1 \ #安裝支持資料庫分區
# -DEXTRA_CHARSETS=all \ #安裝所有的字元集
# -DDEFAULT_CHARSET=utf8 \ #默認字元
# -DDEFAULT_COLLATION=utf8_general_ci \ #校驗字元
3
修改目錄所有者和所有組
[root@end mysql]# chown -R mysql:mysql .
4
初始化資料庫
[root@end mysql]# scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/
5
復制mysql服務啟動配置文件(注意:在CentOS 6.4版操作系統的最小安裝完成後,在/etc目錄下會存在一個my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。)
[root@end mysql]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
注冊為服務
[root@end mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

讓chkconfig管理mysql服務
[root@end mysql]# chkconfig --add mysqld[root@end mysql]# chkconfig mysqld on

設置環境變數
在文件/etc/profile末尾添加
PATH=/usr/local/mysql/bin:$PATH
立即生效
[root@end mysql]# source /etc/profile

啟動mysql服務
[root@end mysql]# service mysqld startStarting MySQL...

檢查mysql服務是否啟動
[root@end mysql]# netstat -tulnp |grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24351/mysqld
修改mysql用戶root密碼
[root@end mysql]# mysql -uroot 登錄到mysql,首次登陸無密碼
設置mysql密碼
mysql> SET PASSWORD = PASSWORD('endmoon');
Query OK, 0 rows affected (0.00 sec)
用設置的密碼登錄
[root@end mysql]# mysql -u root -pEnter password: endmoon
若要設置root用戶可以遠程訪問,執行
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.20' IDENTIFIED BY 'password' WITH GRANT OPTION;Query OK, 0 rows affected (0.00 sec)
配置防火牆
防火牆的3306埠默認沒有開啟,若要遠程訪問,需要開啟這個埠
打開/etc/sysconfig/iptables,在-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT後面添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[root@end mysql]# service iptables restart
使更改的防火牆配置生效 iptables:將鏈設置為政策 ACCEPT:filter [確定]
iptables:清除防火牆規則: [確定]
iptables:正在卸載模塊: [確定]
iptables:應用防火牆規則:
mysql資料庫的安裝到這里就結束了

❷ 知乎上有哪些比較活躍的資料庫領域大牛

阿里雲資料庫團隊比較熟,隨手梳理了以下

丁奇:MySQL社區核心成員。專注於數據存儲系統、MySQL 源碼研究和改進、MySQL 性能優化和功能改進。

子嘉:Redis中國用戶會發起人,Redis技術大學校長

葉翔:MongoDB江浙地區用戶會主席
在此之前也是淘寶Tair分布式KV系統的技術負責人,負責過阿里雲Memcache,Redis服務等,在阿里集團工作8年,一直在做NoSQL相關的技術。

德歌:阿里雲 PostgreSQL技術負責人,PostgreSQL中國技術大學校長、GreenPlum源碼深度研究者

彭立勛:參與了ACMUG(MySQL中國用戶組)的發起和組建,擔任副主席和杭州地區的組織者。MariaDB基金會唯一的中國成員

蕭少聰:PostgreSQL 中國社區主席

❸ mysql源碼怎麼調用引擎

mysql源碼調用引擎步驟:
1、打開mysql的命令行。
2、輸入資料庫密碼。
3、查詢默認資料庫引擎。
4、默認的引擎是InnoDB,修改即可。

❹ 怎麼樣使用CLion調試分析MySQL Server

由於在寫MySQL日誌訂閱服務時候,需要確定在什麼event之後保存position,所以就開始研究MySQL的源碼,剛開始採用最原始的列印輸出的方式去調試,然後每次改完編譯運行,效率好低,讓我很絕望,然後我花了些時間研究下怎麼使用CLion Debug MySQL。
獲取源碼
git clone https://github.com/mysql/mysql-server

編譯安裝初始化資料庫
cd mysql-server

cmake \
-DCMAKE_INSTALL_PREFIX=/path/mysql/install \
-DMYSQL_DATADIR=/path/mysql/data \
-DSYSCONFDIR=/path/mysql/etc \
-DMYSQL_UNIX_ADDR=/path/mysql/mysql.sock \
-DWITH_DEBUG=1 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/path/mysql-server/ -DDOWNLOAD_BOOST_TIMEOUT=60000

make -j 4

make install -j 4

mysqld --initialize-insecure --user=root --datadir=/path/mysql/data

啟動MySQL,測試下是否安裝成功
/path/install/bin/mysqld --defaults-file=/path/mysql/etc/my.cnf

使用CLion新建工程並打開源碼目錄之後,設置CLion
CMake Options和你編譯安裝時的選項一致
-DCMAKE_INSTALL_PREFIX=/path/mysql/install
-DMYSQL_DATADIR=/path/mysql/data
-DSYSCONFDIR=/path/mysql/etc
-DMYSQL_UNIX_ADDR=/path/mysql/mysql.sock
-DWITH_DEBUG=1

然後在CLion里,Reload CMake Project

在Run/Debug列表裡就可以看到很多選項了

找到mysqld配置下啟動參數
mysqld --defaults-file=/path/mysql/etc/my.cnf

然後以Debug模式啟動,看下成功的效果

❺ MySQL與Redis資料庫連接池介紹(圖示+源碼+代碼演示)

資料庫連接池(Connection pooling)是程序啟動時建立足夠的資料庫連接,並將這些連接組成一個連接池,由程序動態地對池中的連接進行申請,使用,釋放。

簡單的說:創建資料庫連接是一個很耗時的操作,也容易對資料庫造成安全隱患。所以,在程序初始化的時候,集中創建多個資料庫連接,並把他們集中管理,供程序使用,可以保證較快的資料庫讀寫速度,還更加安全可靠。

不使用資料庫連接池

如果不使用資料庫連接池,對於每一次SQL操作,都要走一遍下面完整的流程:

1.TCP建立連接的三次握手(客戶端與 MySQL伺服器的連接基於TCP協議)

2.MySQL認證的三次我收

3.真正的SQL執行

4.MySQL的關閉

5.TCP的四次握手關閉

可以看出來,為了執行一條SQL,需要進行大量的初始化與關閉操作

使用資料庫連接池

如果使用資料庫連接池,那麼會 事先申請(初始化)好 相關的資料庫連接,然後在之後的SQL操作中會復用這些資料庫連接,操作結束之後資料庫也不會斷開連接,而是將資料庫對象放回到資料庫連接池中

資源重用:由於資料庫連接得到重用,避免了頻繁的創建、釋放連接引起的性能開銷,在減少系統消耗的基礎上,另一方面也增進了系統運行環境的平穩性(減少內存碎片以及資料庫臨時進程/線程的數量)。

更快的系統響應速度:資料庫連接池在初始化過程中,往往已經創建了若干資料庫連接置於池中備用。 此時連接的初始化工作均已完成。對於業務請求處理而言,直接利用現有可用連接,避免了從資料庫連接初始化和釋放過程的開銷,從而縮減了系統整體響應時間。

統一的連接管理,避免資料庫連接泄露:在較為完備的資料庫連接池實現中,可根據預先的連接佔用超時設定,強制收回被佔用連接。從而避免了常規資料庫連接操作中可能出現的資源泄露。

如果說你的伺服器CPU是4核i7的,連接池大小應該為((4*2)+1)=9

相關視頻推薦

90分鍾搞懂資料庫連接池技術|linux後台開發

《tcp/ip詳解卷一》: 150行代碼拉開協議棧實現的篇章

學習地址:C/C++Linux伺服器開發/後台架構師【零聲教育】-學習視頻教程-騰訊課堂

需要C/C++ Linux伺服器架構師學習資料加qun 812855908 獲取(資料包括 C/C++,Linux,golang技術,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,ffmpeg 等),免費分享

源碼下載

下載方式:https://github.com/dongyusheng/csdn-code/tree/master/db_pool(Github中下載)

db_pool目錄下有兩個目錄,mysql_pool目錄為MySQL連接池代碼,redis_pool為redis連接池代碼

下面介紹mysql_pool

CDBConn解析

概念: 代表一個數據連接對象實例

相關成員:

m_pDBPool:該資料庫連接對象所屬的資料庫連接池

構造函數: 綁定自己所屬於哪個資料庫連接池

Init()函數: 創建資料庫連接句柄

CDBPool解析

概念:代表一個資料庫連接池

相關成員:

Init()函數:常見指定數量的資料庫實例句柄,然後添加到m_free_list中,供後面使用

GetDBConn()函數: 用於從空閑隊列中返回可以使用的資料庫連接句柄

RelDBConn()函數: 程序使用完該資料庫句柄之後,將句柄放回到空閑隊列中

測試之前,將代碼中的資料庫地址、埠、賬號密碼等改為自己的(代碼中有好幾處)

進入MySQL, 創建mysql_pool_test資料庫

進入到mysql_pool目錄下, 創建一個build目錄並進入

然後輸入如下的命令進行編譯

之後就會在目錄下生成如下的可執行文件

輸入如下兩條命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時4秒左右;使用連接池之後,整個操作耗時2秒左右,提升了一倍

源碼下載

下面介紹redis_pool

測試

進入到redis_pool目錄下, 創建一個build目錄並進入

然後輸入如下的命令進行編譯

之後就會在目錄下生成如下的可執行文件

輸入如下的命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時182ms;使用連接池之後,整個操作耗時21ms,提升了很多

進入redis,可以看到我們新建的key:

❻ mysql的源代碼是公開的嗎

開發 mysql 的人真是大公無私,這么好的軟體不但免費,而且居然願意把源碼向世人公開,向他們致敬。不過現在被 oracle 拿去了,不知道會不會被使壞。

閱讀全文

與mysql源碼研究相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163