自学数据库MySQL需要注意哪些方面一、熟悉MySQL的运行环境
MySQL数据库是在Linux环境下运行的,建议先熟练Linux系统 。选定好架构模式之后就可以开始进入程序开发和数据处理的环节 。
【怎么熟悉mysql 怎么熟悉一个城市的路】二、有扎实的数据库理论知识
MySQL作为关系型数据库,在实际的应用中也要学会分析存储数据的关系型数据结构,关系操作集合等 。只有对这些内容有一个明确的认识,在设计数据库字段、表与表的关系才能考虑周全,避免出现错误 。
三、熟练的SQL语言运用
任何一种数据库的学习,包括MySQL,SQL语句都是位于核心部分的内容 。需要注意的是SQL语言的使用要力求简明扼要,能用一个select搞定的问题并不需要写更多的union 。所以在SQL语言的应用方面要注意高效 。
新手如何调试 MySQL?看这一篇就够了前几天看到姜老师的旧文用 VSCode 编译和调试 MySQL,每个 DBA 都应 get 的小技能[1], 文末留了一个思考题,如何修改源码,自定义版本,使得select version()输出自定义内容
调试过程参考macOS VSCode 编译调试 MySQL 5.7[2]
内部Item对象参考从SQL语句到MySQL内部对象[3]
源码面前没有秘密 , 建义对 DB 感兴趣的尝试 debug 调试 。本文环境为 macvscodelldb
vscode 插件:
mysql 源码:
补?。? MySQL = 8.0.21需要对 cmake/mysql_version.cmake 文件打补丁 (没有严格测试所有版本)
创建cmake-build-debug目录,后续 mysql 编译结果,以及启动后生成的文件都在这里
在 mysql 工程目录下面创建.vscode/settings.json文件
内容没啥好说的,都是指定目录及 boost 配置,其中WITH_DEBUG打开 debug 模式,会在 /tmp/debug.trace 生成 debug 信息
View-Command Palette-CMake: Configure执行后生成 cmake 配置
View-Command Palette-CMake: Build编译生成最终 mysql 相关命令
发现老版本编译很麻烦 , 各种报错,mysql 5.7 代码量远超过 5.5, 只能硬着头皮看 5.7
首先初始化 my.cnf 配置,简单的就可以 , 共它均默认
初始化数据文件,非安全模式,调试用
由于用 vscode 接管 mysql, 所以需要配置.vscode/launch.json
然后点击run and debug mysqld
mysql 启动,看到输出日志无异常,此时可以用 mysql-client 连接
首先在 sql_parser.cc:5435 处打断点
mysql_parse是 sql 处理的入口 , 至于 tcp connection 连接先可以忽略
执行上述 sql 自动跳转到断点处 , Step Into ,Step Over ,Step Out这些调试熟悉下即可
接下来分别调用主要函数:mysql_execute_command ,execute_sqlcom_select ,handle_query ,select-join-exec() ,Query_result_send::send_data ,Item::send ,Item_string:val_str ,Protocol_text::store ,net_send_ok
启动 mysql 时init_common_variables会初始化一堆变量 , 其中会调用set_server_version生成版本信息,修改这个就可以
看好条件编译的是哪块,修改即可,重新CMake: Build编译再运行
这里不做过深分析,简单讲
sql_yacc.cc函数PTI_function_call_generic_ident_sys解析 sql, 识别出version()是一个函数调用
find_native_function_builder查找 hash 表 , 找到对应version函数注册的单例工厂函数
mysql 启动时调用item_create_init将这些函数 builder 注册到 hash 表native_functions_hash
MySQL 代码太庞大,5.1 大约 100w 行,5.5 130w 行,5.7 以后 330w 行,只能挑重点读源码 。最近很多群里的人在背八股,没必要,有那时间学着调试下源码,读读多好
原文出处:
熟悉mysql是怎样一种体验我对mysql不熟悉,但是我觉得达到我认为的熟悉程度需要满足以下:
熟悉所有mysql特有的sql语句和数据类型,比如mysql中分页用limit,对应的oracle用rownum之类的 , 不能写个sql还要去google一把
熟悉百分之八十mysql配置,包括mysql库中的那些配置数据表,配置文件等,知道这些配置可以解决那些问题;知道不同操作系统下的不同注意点 。
mysql的部署,主从,主主从从
原生mysql的一些限制或者说特点,算经验值吧 。。比如单实例大小不要超过150G,带变成字段的数据表行数不要超过500万行等等
达到精通:
熟悉所有mysql的配置 , 包括数据库中的配置和配置文件的,能够针对不同的部署环境做出特定的调优 , 包括性能和安全
开始研究源代码,从源代码层面反推出一些特性
为了解决某个问题,至少知道从哪个地方切入修改源代码能解决
能够针对业务需求和mysql的特性,给出最合理的设计
以上,都是我吹牛X的 , 我自己也没达到熟悉的程度,仅供参考 。
怎么熟悉mysql的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于怎么熟悉一个城市的路、怎么熟悉mysql的信息别忘了在本站进行查找喔 。
推荐阅读
- linux命令创建硬链接,linux建立硬链接命令
- chatgpt马斯克,马斯克 openai
- 发型店如何营销,美发店营销技巧
- 自助建站免费搭建个人网站,网站制作
- go语言的环境适应性 go语言适用场景
- flutter播放音频字节流,flutter audioplayer
- mysql增量查询 mysql增量插入数据语法
- mysql中主键 mysql怎么将主键失效
- chatgpt聊天窗口在哪,chatpic怎么打开