mysql调试技巧(mysql实操)

  • 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/n/126344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
LGBCU的头像LGBCU
上一篇 2024-10-03 23:07
下一篇 2024-10-03 23:07

相关推荐

  • 如何修改mysql的端口号

    本文将介绍如何修改mysql的端口号,方便开发者根据实际需求配置对应端口号。 一、为什么需要修改mysql端口号 默认情况下,mysql使用的端口号是3306。在某些情况下,我们需…

    编程 2025-04-29
  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • MySQL递归函数的用法

    本文将从多个方面对MySQL递归函数的用法做详细的阐述,包括函数的定义、使用方法、示例及注意事项。 一、递归函数的定义 递归函数是指在函数内部调用自身的函数。MySQL提供了CRE…

    编程 2025-04-29
  • 优秀周记1000字的撰写思路与技巧

    优秀周记是每个编程开发工程师记录自己工作生活的最佳方式之一。本篇文章将从周记的重要性、撰写思路、撰写技巧以及周记的示例代码等角度进行阐述。 一、周记的重要性 作为一名编程开发工程师…

    编程 2025-04-28
  • MySQL bigint与long的区别

    本文将从数据类型定义、存储空间、数据范围、计算效率、应用场景五个方面详细阐述MySQL bigint与long的区别。 一、数据类型定义 bigint在MySQL中是一种有符号的整…

    编程 2025-04-28
  • MySQL左连接索引不生效问题解决

    在MySQL数据库中,经常会使用左连接查询操作,但是左连接查询中索引不生效的情况也比较常见。本文将从多个方面探讨MySQL左连接索引不生效问题,并给出相应的解决方法。 一、索引的作…

    编程 2025-04-28
  • 堆叠图配色技巧分享

    堆叠图是数据可视化中常用的一种表现形式,而配色则是影响堆叠图观感和传达信息的重要因素之一。本文将分享一些堆叠图配色的技巧,帮助你创造更好的数据可视化。 一、色彩搭配原则 色彩是我们…

    编程 2025-04-27
  • 使用uring_cmd提高开发效率的技巧

    对于编程开发工程师来说,提高效率一直是致力追求的目标。本文将深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一个非常强大的命令行工具,但是大部…

    编程 2025-04-27
  • CentOS 7在线安装MySQL 8

    在本文中,我们将介绍如何在CentOS 7操作系统中在线安装MySQL 8。我们会从安装环境的准备开始,到安装MySQL 8的过程进行详细的阐述。 一、环境准备 在进行MySQL …

    编程 2025-04-27

发表回复

登录后才能评论