- 1、如何在Windows下編譯或調試MySQL
- 2、[MYSQL]怎麼調試存儲過程?或調試方法
- 3、MySQL速度變慢,怎麼辦
- 4、mysql怎麼調試存儲過程
- 5、如何安裝並測試MySQL
- 6、navicat 怎樣調試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安裝,源地址在這裡
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
MYSQL 5.0以前是不支持存儲過程的,當然如果你用了5以後的版本,自然可以了。
調試,是沒辦法的,只能看結果。
MySQL 在崩潰恢復時,會遍歷打開所有 ibd 文件的 header page 驗證數據字典的準確性,如果 MySQL 中包含了大量表,這個校驗過程就會比較耗時。 MySQL 下崩潰恢復確實和表數量有關,表總數越大,崩潰恢復時間越長。另外磁盤 IOPS 也會影響崩潰恢復時間,像這裡開發庫的 HDD IOPS 較低,因此面對大量的表空間,校驗速度就非常緩慢。另外一個發現,MySQL 8 下正常啟用時居然也會進行表空間校驗,而故障恢復時則會額外再進行一次表空間校驗,等於校驗了 2 遍。不過 MySQL 8.0 里多了一個特性,即表數量超過 5W 時,會啟用多線程掃描,加快表空間校驗過程。
如何跳過校驗MySQL 5.7 下有方法可以跳過崩潰恢復時的表空間校驗過程嘛?查閱了資料,方法主要有兩種:
1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那麼 validate = false,即可以跳過表空間校驗。實際測試的時候設置 innodb_force_recovery =1,也就是強制恢復跳過壞頁,就可以跳過校驗,然後重啟就是正常啟動了。通過這種臨時方式可以避免崩潰恢復後非常耗時的表空間校驗過程,快速啟動 MySQL,個人目前暫時未發現有什麼隱患。2. 使用共享表空間替代獨立表空間這樣就不需要打開 N 個 ibd 文件了,只需要打開一個 ibdata 文件即可,大大節省了校驗時間。自從聽了姜老師講過使用共享表空間替代獨立表空間解決 drop 大表時性能抖動的原理後,感覺共享表空間在很多業務環境下,反而更有優勢。
臨時冒出另外一種解決想法,即用 GDB 調試崩潰恢復,通過臨時修改 validate 變量值讓 MySQL 跳過表空間驗證過程,然後讓 MySQL 正常關閉,重新啟動就可以正常啟動了。但是實際測試發現,如果以 debug 模式運行,確實可以臨時修改 validate 變量,跳過表空間驗證過程,但是 debug 模式下代碼運行效率大打折扣,反而耗時更長。而以非 debug 模式運行,則無法修改 validate 變量,想法破滅。
mysql調試存儲過程具體方法:
在你的存儲過程中加入如下語句:
SELECT 變量1,變量2;
然後用mysql自帶的cmd程序進入mysql 下。
call 你的存儲過程名(輸入參數1,@輸出參數);(注:這裡幫助下新同學,如果你的存儲過程有輸出變量,那麼在這裡只需要加 @ 然後跟任意變量名即可);
即可發現你的變量值被打印到了cmd下
PHP MySQL Linux現在已逐漸成為小型web服務器的一種經典組合。在Windows環境下構築和調試MySQL數據庫是許多網站研發者的一種最好選擇。本人在Windows98環境下初學MySQL,現將學習過程和經驗總結出來供大家參考。1、下載mysql-3.23.35-win.zip並解壓;2、運行setup.exe;選擇d:mysql,”tyical install”3、啟動mysql,有如下方法:方法一:使用winmysqladmin1)、進入d::mysqlbin目錄,運行winmysqladmin.exe,在屏幕右下角的任務欄內會有一個帶紅色的圖符2)、鼠標左鍵點擊該圖符,選擇“show me”,出現“WinMySQLAdmin”操作界面;首次運行時會中間會出現一個對話框需要輸入並配置您的用戶名和口令3)、選擇“My.INI setup”4)、在“mysqld file”中選擇“mysqld-opt”(win9x)或“mysqld-nt”(winNT)5)、選擇“Pick-up or Edit my.ini values”能夠在右邊窗口內對您的my.ini文檔進行編輯6)、選擇“Save Modification”保存您的my.ini文檔7)、假如您想快速使用winmysqladmin(開機時自動運行),選擇“Create ShortCut on Start Menu”8)、測試:進入DOS界面;在d:mysqlbin目錄下運行mysql,進入mysql交互操作界面輸入show databases並回車,屏幕顯示出當前已有的兩個數據庫mysql和test方法二:不使用winmysqladmin1)、在DOS窗口下,進入d:/mysql/bin目錄2)、win9X下)運行:mysqld在NT下運行:mysqld-nt –standalone3)、此後,mysql在後台運行4)、測試mysql:(在d:/mysql/bin目錄下)a)、mysqlshow 正常時顯示已有的兩個數據庫mysql和testb)、mysqlshow -u root mysql 正常時顯示數據庫mysql里的五個表:columns_priv,db,host,tables_priv,userc)、mysqladmin version status proc 顯示版本號、狀態、進程信息等d)、mysql test 進入mysql操作界面,當前數據庫為test4、至此,MySQL已成功安裝,接着能夠熟悉MySQL的常用命令並創建自己的數據庫了。
navicat 怎樣調試mysql存儲過程
使用Navicat for MySQL工具創建存儲過程步驟:
1. 新建函數(選擇函數標籤 – 點擊新建函數):
2、輸入函數的參數個數、參數名、參數類型等:
3、編寫存儲過程:
4、保存(請輸入合法名稱):
5、運行存儲過程(在結果1,2,3…中可以查詢輸出信息):
原創文章,作者:LGBCU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126344.html