本文目录一览:
- 1、如何在Windows下编译或调试MySQL
- 2、[MYSQL]怎么调试存储过程?或调试方法
- 3、MySQL速度变慢,怎么办
- 4、mysql怎么调试存储过程
- 5、如何安装并测试MySQL
- 6、navicat 怎样调试mysql存储过程
如何在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安装,源地址在这里
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]怎么调试存储过程?或调试方法
MYSQL 5.0以前是不支持存储过程的,当然如果你用了5以后的版本,自然可以了。
调试,是没办法的,只能看结果。
MySQL速度变慢,怎么办
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怎么调试存储过程
mysql调试存储过程具体方法:
在你的存储过程中加入如下语句:
SELECT 变量1,变量2;
然后用mysql自带的cmd程序进入mysql 下。
call 你的存储过程名(输入参数1,@输出参数);(注:这里帮助下新同学,如果你的存储过程有输出变量,那么在这里只需要加 @ 然后跟任意变量名即可);
即可发现你的变量值被打印到了cmd下
如何安装并测试MySQL
PHP MySQL Linux现在已逐渐成为小型web服务器的一种经典组合。在Windows环境下构筑和调试MySQL数据库是许多网站研发者的一种最好选择。本人在Windows98环境下初学MySQL,现将学习过程和经验总结出来供大家参考。 1、下载mysql-3.23.35-win.zip并解压; 2、运行setup.exe;选择d:mysql,"tyical install" 3、启动mysql,有如下方法:方法一:使用winmysqladmin 1)、进入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方法二:不使用winmysqladmin 1)、在DOS窗口下,进入d:/mysql/bin目录 2)、win9X下)运行:mysqld在NT下运行: mysqld-nt --standalone 3)、此后,mysql在后台运行 4)、测试mysql:(在d:/mysql/bin目录下) a)、mysqlshow 正常时显示已有的两个数据库mysql和test b)、mysqlshow -u root mysql 正常时显示数据库mysql里的五个表:columns_priv,db,host,tables_priv,user c)、mysqladmin version status proc 显示版本号、状态、进程信息等 d)、mysql test 进入mysql操作界面,当前数据库为test 4、至此,MySQL已成功安装,接着能够熟悉MySQL的常用命令并创建自己的数据库了。
navicat 怎样调试mysql存储过程
navicat 怎样调试mysql存储过程
使用Navicat for MySQL工具创建存储过程步骤:
1. 新建函数(选择函数标签 - 点击新建函数):
2、输入函数的参数个数、参数名、参数类型等:
3、编写存储过程:
4、保存(请输入合法名称):
5、运行存储过程(在结果1,2,3...中可以查询输出信息):