mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成
近几个月的心情真是安排的妥妥的,呈现W状。多的不说了,这里对SQL的测试进行简单梳理,制作一份SQL Cheat Sheet。
0x01、数据库基本架构
- Clinet层
- Server层
- 连接器
- 网络连接建立、管理
- 长连接导致的OOM的自动处理
- 权限管理
- 网络连接建立、管理
- 缓存
- KV
- 分析器
- 词法分析
- 语法分析
- AST语法树
- 优化器
- 多表连接顺序
- 索引选取
- 执行器
- MySQL调用存储引擎提供的接口
- 其他
- 内置函数
- 存储过程
- 触发器
- 视图
- 连接器
- 存储引擎层
- 数据R/W
0x02、SQL词法分析
A、解析SQL步骤
- 词法分析:将SQL字符串拆分成包含关键词识别的字符段(Tokens)。
- 语法分析:利用自顶向下或自底向上的算法,将Tokens解析为AST(Abstract Syntax Trees)。
- 错误检测、恢复、提示推断:需要利用语法分析产生的AST。
B、词法分析
词法分析根据规则将SQL字符串切分为若干字符段,切分的规则与定义的Tokens有关。
SQL的Token分类(精简):
- 注释
- 关键字(SELECT、CREATE)
- 操作符(+、-、>=)
- 开闭合标志
- 支持子句
- 占位符(?)
- 空格
- 引号包裹的文本、数字、字段
词法分析阶段,只需识别关键词即可切分(正则),而关键词的辨认、语意处理、上下文相关都在语法分析阶段处理。
C、语法分析
语法分析分为自顶向下与自底向上,自顶向下一般采用递归下降方式处理,自底而上一般采用移进(shift)规约(reduce)方式处理。
0x03、数据库测试点 - 基本流程
- 连接数据库
- 网络连接
- 权限
- DB错误
- 创建数据库
- 创建表结构
- 执行SQL语句、存储过程、触发器
- 大小写敏感
- SQL保留字
- SQL语法错误
- 释放与数据库连接
0x04、数据库性能测试
A、可能会导致性能降低的原因
- 物理存储
- 逻辑设计
- 数据参数调整
- SQL语句优化
B、MySQL性能测试方法
1、测试工具:mysqlslap,mysqlslap是MySQL 5.1.4之后自带的benchmark基准测试工具,该工具可以模拟多个客户端同时并发的向服务器发出查询更新。
使用方法,https://my.oschina.net/moooofly/blog/152547。
2、测试流程:建立测试数据库database和待测试的表tables,根据table的结构,利用脚本生成一定数量的有效随机数据,通过mysqlslap对相应query语句进行测试,最后进行结果数据的分析。
3、关键语句:考虑到MySQL的实际应用情况,通过资源属性查询资源的操作为主要操作,且这类操作的耗时占总操作耗时的比例为最大,故这类操作的查询语句为关键语句,对整个数据库性能影响很大,可以通过测试这个关键语句得出的结果来评估整个数据库的性能。
0x05、sysbench
A、基准测试
数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑,要求真实的数据。
对数据库的基准测试的作用,就是分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出MySQL的性能阈值,并根据实际系统的要求调整配置。
针对MySQL进行基准测试时,一般使用专门的工具进行,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更强大,且更适合Innodb(模拟了许多Innodb的IO特性)。
B、sysbench
sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库;主要包括以下几种测试:
- cpu性能
- 磁盘io性能
- 调度程序性能
- 内存分配及传输速度
- POSIX线程性能
- 数据库性能(OLTP基准测试)
STUB
参考:
作业部落 Cmd Markdown 编辑阅读器
https://www.slideshare.net/yejr/my-sql-20131020
https://juejin.im/entry/59e051ad6fb9a0450b6565ec
https://cloud.tencent.com/developer/article/1004894
https://github.com/dt-fe/weekly/blob/master/64.精读《手写 SQL 编译器 - 词法分析》.md
mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成相关推荐
- linux mysql软件_「Linux」 - 常用软件安装-MySql
一.TIPS 1.5.6版本使用mysql_install_db安装:5.7版本中被废弃,使用--initialize,进行初始化安装 2.初始化时,使用--initialize-insecure生成 ...
- mysqlclient==1.3.7对应mysql版本_「MySQL」CentOs 7 下安装MySQL
MySQL MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管 ...
- mysql pk uk_「fk」SQL中PK、UK、DF、CK、FK的意思 - seo实验室
fk PK 主键 constraint primary key UK 唯一约束 DF 约束默认 constrint default for CK 检查约束 constraint check() FK ...
- mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯
在前面的学习中我们提到过字段类型这个概念,本篇的主题就是来讲一种常用而相对复杂的类型:日期与时间. MySQL中表示日期与时间的数据类型有很多种,但主要的不外乎下面五种: 记住上面表中的"范 ...
- mysql 日期_「13」MySQL中与日期与时间相关的函数
下面这张图片,是我们每个人拿起手机就应该看到的,这就是日期与时间! MySQL中如何通过各种函数来实现日期与时间的处理?这就是本文所要探索的问题! [1]获取当前日期的函数 [结论]返回值是以&quo ...
- 二级联动省市mysql数据库_「zxfy」jQuery+php+mysql,轻松实现ajax无刷新省市二级联动 - seo实验室...
zxfy 用jQuery的ajax方法,结合PHP,轻松实现省市级的二级联动: 新建area.php $dbc=mysqli_connect("localhost","x ...
- mysql永远不用utf8_永远不要在 MySQL 中使用「utf8」
题图:by apple from Instagram 本文出自极客邦「聊聊架构」公众号的编译.我自己当年也被这个问题坑过,当时并没有如此详细的分析文章.我觉得有责任再次分享一下,让更多人知道这个事情. ...
- 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!
构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...
- shell实行mysql语句_【Mysql】shell运行mysql的sql语句_MySQL
bitsCN.com [Mysql]shell运行mysql的sql语句 shell本身是一种脚本语言,所以不能像java一样通过api去连接数据库.shell还是要借助mysql本身的一些运行脚本才 ...
最新文章
- 多个流,简短的读和写
- QT如何实现对于字符串数学公式计算
- Linux安装好php后找不到php.ini
- 将多张图整合到一张大图中,再用css定位技术
- 知识图谱应用实战案例100篇(一)-阿里巴巴超大规模知识图谱预训练实践:商品分类
- Linux的chattr与lsattr命令详解(重点-i参数,锁定文件,禁止修改文件)
- python中 if __name__ == ‘__main__‘
- sigmoid函数_深度学习中激活函数总结
- UnityShader - 模拟动态光照特效
- linux的vi详细命令
- 【激光雷达3D】【论文翻译】PointPillars: Fast Encoders for Object Detection from Point Clouds
- Linux如何在系统启动时自动加载模块 .
- 解决:网络风暴引起的无法ping通
- ROS-Navigation之map_server笔记及程序解析
- Spring——DI
- 清华大学计算机学院考研参考书目,2020清华大学计算机考研参考书目及复试线...
- 城市级智能网联示范区情况全扫描(2021版)
- Android自定义View实现三角到八角的属性分布图-雷达图(蜘蛛网图)
- 一键卸载,跟流氓软件说拜拜~
- 腾讯手游助手链接资源更新服务器失败怎么办,腾讯手游助手更新刺激战场提示网络出现异常更新失败怎么办?...
热门文章
- 学生命科学要学计算机吗,现在学生物学出路真的有那么不济吗?
- matlab工程计算及应用 课程名称,《 MATLAB 工程计算及应用》教学大纲课程名称MATLAB 工程计算及应用.pdf...
- 电梯tt服务器显示第二行啥意思,【大杂烩】〖其他〗奥的斯电梯服务调试器按键说明(TT)...
- 计算机应用技术一级考试成绩,《计算机应用基础》课程与等级考试成绩的关系...
- mysql 远程连接取消权限_MYSQL远程登录权限设置
- java基础分享_一、java基础教程
- bigdecimal判断等于0_vue2.0源码用到的工具函数,12个简易的复用函数,看看有多简单...
- ProtoBuff3.0.0在Ubuntu上安装
- PCM复用设备和PDH设备的区别介绍
- 单E1光端机分类及技术指标详解