當前位置:首頁 » 編程軟體 » mysql57編譯

mysql57編譯

發布時間: 2022-09-22 02:28:58

① mysql怎麼實現預編譯

玩Oracle的都比較關注shared pool,特別是library cache,在使用了綁定變數(預編譯sql)之後確實能得到很大的性能提升。現在在轉Mysql之後特別是innodb很多東西都還能和Oracle對得上號的,就像innodb_buffer_pool_size類似於Oracle的database buffer cache,innodb_log_buffer_size類似於redo log buffer,但是innodb_additional_mem_pool_size僅僅類似於shared pool的Data dictionary cache,似乎還缺少和library cache相對應的東西。那就有一個問題了,在Mysql裡面使用預編譯的sql還會有性能提升嗎?

這里我用Java的jdbc做了一下測試,分別用Statement和PreparedStatement執行1000個sql,並運行10次

1.使用Statement做硬解析:

結果如下:

elapsed time(ms):14773
elapsed time(ms):16352
elapsed time(ms):14797
elapsed time(ms):15800
elapsed time(ms):12069
elapsed time(ms):14953
elapsed time(ms):13238
elapsed time(ms):12366
elapsed time(ms):15263
elapsed time(ms):13089
average time(ms):14270

可以看出兩種方式執行的結果幾乎相同,不像Oracle差距那麼大。而且就算是用PreparedStatement的方式,在Mysql資料庫端抓出來的sql語句也不是以變數id=?的形式出現的,而是實際的數值。後來在網上看到在連接字元串上加上useServerPrepStmts=true可以實現真正的預編譯

String url="jdbc:mysql://172.16.2.7:3306/testdb"; url=url+"?useServerPrepStmts=true";

加上這段後可以在資料庫端可以看到明確的結果:

mysql> show global status like 'Com_stmt_prepare';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Com_stmt_prepare | 11 |
+------------------+-------+
1 row in set (0.00 sec)

但是實際的運行結果和上面幾乎一樣,性能上也沒有任何的提升。由此可以推斷出Mysql由於缺少類似於Oracle的library cache的部件,因此採用預編譯方式執行sql是沒有性能上的提升的。

② cmake安裝mysql編譯提示錯誤,錯誤提示如下,請大家指教,謝謝!

錯誤提示里說你的計算機上沒有一個可用的Boost庫或版本太低,MySQL需要不低於Boost 1.57.0的版本。您應該嘗試下載一個Boost,並且完成編譯。

您應該會得到上面圖片中的大部分文件,除了幾個我自己添加的輔助編譯的腳本

完成之後請再嘗試重新編譯MySQL。

附註:編譯後生成的二進制庫保存在Boost根目錄下stagelib中,請根據MySQL的編譯步驟中的指示填寫在Makefile裡面或者加入環境變數(具體的我不太清楚,需要您視具體情況而定)。

③ mysql5.6.33源碼編譯

重點不是這里,重點是下面的錯誤:
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported table type: InnoDB
[ERROR] Aborting

把你的 datadir 數據目錄清空。重新運行mysql_install_db

④ 如何在Windows下編譯或調試MySQL

用vs code 就可以了。

Visual Studio Code

Visual Studio Code(簡稱VS Code)是由微軟開發的,同時支持Windows、linux和macOS操作系統的開源文本編輯器。它支持調試,內置了Git 版本控制功能,同時也具有開發環境功能,例如代碼補全(類似於IntelliSense)、代碼片段、代碼重構等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤快捷方式、編輯器屬性和其他參數,還支持擴展程序並在編輯器中內置了擴展程序管理的功能。


安裝LLDB

LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統自帶的LLDB,安裝前必須先創建證書否則無法安裝,步驟如下:

創建完成後,開始安裝LLVM

brew install llvm --with-python@2--with-lldb

安裝插件

VS Code自帶有debug功能,這里我推薦使用LLDB Debugger插件。

接下來,為項目配置調試參數。

配置調試參數

使用VS Code打開MySQL源碼目錄,在側邊欄選擇debug欄目,添加配置,program輸入需要調試的程序路徑,這里選擇你編譯好的mysqld路徑,args輸入程序啟動所需的參數,通常會指定mysqld的配置文件。這樣就配置好了,是不是很簡單。

啟動調試

點擊啟動按鈕,啟動後如果沒有設置斷點會mysqld會正常啟動,如果觸發了斷點會如下圖顯示。

整個調試窗口基本分為六部分,所有的調試操作都在這里完成:

1:顯示變數信息

2:設置重點關注的變數

3:顯示調用棧信息

4:設置斷點信息,在代碼行號前也可以設置斷點

5:代碼顯示區域,上方是調試按鈕,包括 continue/stepover/step in/step out/restart/stop

6:調試終端輸入輸出區


斷點設置

在代碼行號前點擊即可在該行為設置斷點,也可以根據條件設置斷點。以設置ConditionalBreakpoint為例,當程序啟動後會按照你設置的條件表達式判斷是否觸發斷點。

Conditional Breakpoint這種方式用在目標變數達到某條件時觸發斷點,其餘則跳過繼續執行。比如:設置變數等於目標表名時觸發斷點,其餘表則跳過,相對函數名斷點省去很多手工跳過操作。

遠程調試

假如你想調試遠程Linux伺服器上的MySQL上面的方法就不合適了,這時需要遠程調試。lldb和gdb都支持遠程調試,這里以lldb為例。

需要先在遠程主機上安裝lldb,使用yum安裝,源地址在這里http://mirror.centos.org/centos/7/sclo/x86_64/rh

remote$ yum install -y llvm-toolset-7

安裝完成後,啟動lldb-server

remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform --listen"*:9191"--server

接下來,在VS Code調試界面中新增配置項。

{

"type":"lldb",

"request":"attach",

"name":"Remote attach",

"program":"~/mysql5626/usr/local/mysql/bin/mysqld",

"pid":"<target_pid>",

"initCommands": [

"platform select remote-linux",

"platform connect connect://<remote_host>:9191"

],

"sourceMap": {

"/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.6.26":"/Users/hongbin/workbench/mysql-server"

}

},

program:本機也要拷貝一份目標程序,載入

pid:填寫遠程主機的mysqld進程id

sourceMap:填寫mysqld編譯的代碼路徑與本機代碼庫路徑的映射,這樣調試時代碼才可以和程序關聯在一起看

注意:記得調試前將代碼切換到與目標程序版本一致的branch

⑤ Linux 在線和離線安裝 MySQL

1 linux的常用軟體安裝

配置阿里雲的yum源

1) 安裝wget

2)下載yum源的配置文件

3) 替換原有的yum源

4) 更新現有yum

5) 安裝常用軟體

2 linux的JDK安裝

此處我們選用 jdk1.8_144這個版本作為我們的基礎JDK,此處要切記一點的是1.8的不同版本JDK在配置上會有很大的出入,所以請不要隨便更換基礎的JDK版本,否則你會很尷尬!

使用 rz 上傳jdk到root的家目錄

使用rpm命令安裝jdk

配置jdk的環境變數

刷新環境變數

到此 JDK安裝完成

3 安裝MySQL前說明

本例安裝MySQL版本是 5.7

4 linux 在線安裝MySQL

用root用戶安裝

1)獲取mysql 源安裝包

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

2)安裝mysql 源

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

3)檢查mysql源是否安裝成功

yum repolist enabled | grep "mysql. -community. "

3)用 yum 命令安裝mysql

yum install mysql-community-server

4)修改mysql的配置文件

查看MYSQL配置文件載入順序:

修改/etc/my.cnf 配置文件內的文件目錄

datadir=/data/mysql/data

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

log-error=/data/mysql/log/mysqld.log

其中:

SQL_MODE:通過對其正確的設置可以完成一些約束檢查的工作,設置時,在配置文件my.cnf 中配置進行全局的設置。

STRICT_TRANS_TALES(嚴格模式):

只對支持事務的表啟用嚴格模式。

NO_AUTO_CREATE_USER:

禁止GRANT創建密碼為空的用戶。

NO_ENGINE_SUBSTITUTION:

啟用後,若需要的存儲引擎被禁用或未編譯,則拋出錯誤;未啟用時將用默認的存儲引擎代替,並拋出一個異常。

5)創建mysql 文件目錄

6)生成首次登錄隨機密碼

通過上面命令會在 /data/mysql/log/mysqld.log 中生成隨機碼,隨機碼用來首次登錄mysql。

7)修改mysql 文件目錄所有者為 mysql 用戶

8)啟動mysql

9) 關閉並重啟mysql(可選)

如果再次啟動報錯,就重啟Linux 系統。

10)用生成的隨機密碼登錄mysql

登錄後進入mysql 命令行

11)修改ROOT用戶密碼

設置完密碼後,需要用新密碼重新登錄

12)卸載mysql(不是必須的)

如果啟動報錯,根據錯誤查看原因,如果實在解決不了,卸載mysql 重新裝。

查看已經安裝過的組件

rpm -qa | grep -i mysql

用yum -y remove 卸載所有mysqlyum -y remove mysql57-community-release-el7-11.noarch yum -y remove mysql-community-common-5.7.19-1.el7.x86_64

卸載後再用 rpm -qa | grep -i mysql 查看,直至全部卸載
刪除/data/mysql 目錄

5 linux 離線安裝MySQL

1) 卸載CentOS7系統自帶mariadb

2) 檢查mysql是否存在

3) 檢查mysql的用戶和組是否存在如果不存在就創建

4) 下載MySQL的離線安裝包

官網下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

版本選擇,可以選擇一下兩種方式:

1)使用Red Hat Enterprise Linux

Select Version: 5.7.* (因為更新的緣故具體細節版本可自行查看)

Select Operating System: Red Hat Enterprise Linux / Oracle Linux

Select OS Version: Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)

列表中下載:

Compressed TAR Archive:(mysql-5.7.25-el7-x86_64.tar.gz) 【本文中使用的是這個版本】

2)使用Linux - Generic

Select Version: 5.7.* (因為更新的緣故具體細節版本可自行查看)

Select Operating System: Linux - Generic

Select OS Version: Linux - Generic (glibc 2.12) (x86, 64-bit)

列表中下載:

Compressed TAR Archive:(mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz)

注意:上邊兩種方式找mysql離線安裝包的方式都可以。

選完跳到以下這個頁面點擊 下面的連接就可以開始下載了

5) 上傳MySQL的離線安裝包並解壓進行傳統配置

6) 創建配置文件

7) 開始安裝MySQL

設置許可權

8) 啟動MySQL

9) 設置開機啟動

10) 修改配置文件

11) 獲取初始密碼

獲取初始密碼

創建軟連接

登錄mysql

修改密碼

檢驗密碼是否成功

設置遠程訪問

海汼部落原創文章,原文鏈接:(http://hainiubl.com/topics/75580)

⑥ mysql安裝初始化,卻拒絕訪問

mysql -u root -p -h 127.0.0.1 看看這樣能不能登錄,不要用localhost

初始化後默認的root是沒有密碼的,直接打回車可以了。
官方不建議密碼在語句中顯示。呵呵

⑦ mysql源代碼編譯安裝錯誤,請高手指點

需要root許可權,。
su root
然後敲入密碼就行了。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:639
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:84
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:793
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:344
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:812
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:366
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:593