MySQL程序特别酷

news2024/12/26 12:21:21

这一篇和上一篇有重合的内容,,我决定从头开始再学一下MySQL,和上一篇的区别是写的更细了,以及写这篇的时候Linux已经学完了

下面就是关于MySQL很多程序的介绍:

MySQL安装完成通常会包含如下程序:

Linux系统程序一般在/usr/bin目录下,可以通过命令查看:

Windows系统目录也可以查看(如果安装过MySQL的话):

PS D:\Program Files\MySQL\MySQL Server 8.0\bin> dir *.exe

每一个MySQL程序都有许多不同的选项,大多数程序都提供一个--help选项,可以使用这个选项来获取程序不同选项的描述 

mysql是客户端程序

mysqld是服务端程序 

这乱七八糟的东西(常用的 MySQL程序)可以用,,,一张表来描述一下:

 mysqld是服务端程序,mysql是客户端程序,上面那个表除了mysqld都是客户端程序

 搞怪裤太裤了

mysqld也被称为MySQL服务器,是⼀个多线程程序,对数据目录(可以理解为mysql的主要工作目录)进行访问管理(包含数据库和表)。数据目录也是其他信息(如日志文件和状态文件)的默认存储位置。

当MySQL服务器启动时,会侦听指定的端⼝、处理来⾃客⼾端程序的网络连接,并管理不同客户端对数据库的访问

 mysqld程序有许多选项可以在启动时指定。运行以下命令查看完整的选项列表:

root@guangchen-vm:~# mysqld --verbose --help

mysql客户端怎么学呢?

 mysql是⼀个简单的SQLshell,可以输入命令和执行SQL语句,当执行SQL语句时,查询结果以ASCII表格式显示

mysql的基本使用还是比较简单的,,:

# 连接MySQL服务器,⻓选项格式
mysql --user=user_name --password [db_name]
# 短选项格式
mysql -uuser_name -p [db_name]
# 输⼊密码
Enter password: your_password

 mysql有指定选项的方式:

1.在mysql后⾯的命令行中列出选项 

2.在mysql后⾯指定配置⽂件的路径以便在程序启动时读取配置⽂件中的选项

(读取并解析对应程序选项的值,并应用在启动参数中)

3.使⽤环境变量中的选项

特别裤

MySQL客户端命令

这是对应的选项

在命令行中指定选项遵循原则:

1.选项在程序名之后给出

2.选项以单破折号“-”或双破折号“--”开头。-表示短格式,--表示长格式就比如这两句是一样的:

mysql -?
mysql --help

 3.选项名区分大小写(-v和-V都是合法的,但是意义不同,分别是--verbose和--version选项的相应缩写形式)

4.有些选项需要在后面指定一个值,例如指定主机:

mysql -h 127.0.0.1
msyql --host=127.0.0.1

 5.对于带值的长格式选项,通常用=符号分割选项名和值,对于带值的短选项,选项值可以紧跟在选项只有也可以用空格隔开,这三个是等价的:

--host=127.0.0.1
-h127.0.0.1
-h 127.0.0.1

但如果要指定密码,选项和值之间就不能有空格:

mysql -ptest # test表⽰密码,但没有指定要访问的数据库
mysql -p test # test 表⽰指定了访问的数据库,但没有指定密码

 tips:在命令⾏中,第⼀个不带破折号 - 的值被解析为要访问的数据库名,所以 --database 选项⼀ 般可以省略

在选项的名称中,-和_大多数情况下可以互换使用,但前导破折号不能转为_,例如:--skip-grant-tables和--skip_grant_tables是等价的

对于采⽤数值的选项,该值可以带有后缀 K ,M 或 G 以指⽰乘数1024、1024^2或1024^3,例如,以下命令告诉mysqladmin对服务器执⾏1024次ping,每次ping之间休眠3秒:

mysqladmin --count=1K --sleep=3 ping -uroot -p

在命令行中包含空格的选项值必须用“”引起,例如,--execute(-e)选项与mysql一起使用时,表示将一个或多个SQL语句发送给服务器并显示结果:

mysql -u root -p -e "SELECT VERSION();SELECT NOW();"

这是一些格式上的区别 

 tips:如果选项的值中包含空格,那么值需要包含在双引号中

在命令行中使用选项时,选项应该在程序名之后给出,以单破折号或双破折号开头,-表示短格式,--表示长格式

这是一些MySQL命令:

\r是重新链接服务器,会有链接的次数

\s是查看当前服务器的状态

delimiter(\d)是一个重新指定SQL语句结束标识符的命令

 

quit(\q)都是退出MySQL客户端(没什么好说的)

tee(\T)也是一条命令,可以把所有结果保存到一个指定的文件中

/root目录下回生成一个指定的文件

如果要禁用(执行结果不再写入文件),那就采用notee(\t)呃呃呃

其他的命令可以用help查询:

用help contents命令可以查看关于MySQL数据库的使用帮助,包括用户管理,SQL语法,数据类型,组件等相关内容列表 

 

 可以通过help contents中的具体条目查看介绍:

继续输入help具体的条目可以查看关于此条目的详细说明:

 

 source(\.)是加载并执行指定的.sql脚本

system(\!)就像是:

 执行系统命令(比较危险容易被做手脚)

这个W和w是设置警告显示的:

如图所示

 .sql文件执行SQL语句

为什么有的时候需要从.sql文件中执行一些SQL语句呢?

在这样的情况下适用:有时候我们需要从.sql文件执行一些SQL语句,比如要把一个数据库从一台服务器A复制到另一台服务器B上,那么可以先从服务器A导出数据到.sql文件,然后在服务器B上执行这个.sql文件(需要对应的权限)

也可以使用MySQL客户端直接导入

下面来演示一下source命令的使用方法!

1.准备要执行的.sql文件,我的test_db.sql长这样:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP DATABASE IF EXISTS `test_db`;
CREATE DATABASE `test_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `test_db`;
-- ----------------------------
-- Table structure for classes
-- ----------------------------
DROP TABLE IF EXISTS `classes`;
CREATE TABLE `classes` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL 
DEFAULT NULL,
 `desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL 
DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = 
utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of classes
-- ----------------------------
INSERT INTO `classes` VALUES (1, '计算机系2023级1班', '学习了计算机原理、C和Java语⾔、数据结构和算法');
INSERT INTO `classes` VALUES (2, '中⽂系2023级3班', '学习了中国传统⽂学');
INSERT INTO `classes` VALUES (3, '光电2023级2班', '学习了概率论与数理统计');
-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL 
DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = 
utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, 'Java');
INSERT INTO `course` VALUES (2, '中国传统⽂化');
INSERT INTO `course` VALUES (3, '计算机原理');
INSERT INTO `course` VALUES (4, '语⽂');
INSERT INTO `course` VALUES (5, '⾼阶数学');
INSERT INTO `course` VALUES (6, '英⽂');
-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
 `score` decimal(3, 1) NULL DEFAULT NULL,
 `student_id` int(11) NULL DEFAULT NULL,
 `course_id` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci 
ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (70.5, 1, 1);
INSERT INTO `score` VALUES (98.5, 1, 3);
INSERT INTO `score` VALUES (33.0, 1, 5);
INSERT INTO `score` VALUES (98.0, 1, 6);
INSERT INTO `score` VALUES (60.0, 2, 1);
INSERT INTO `score` VALUES (59.5, 2, 5);
INSERT INTO `score` VALUES (33.0, 3, 1);
INSERT INTO `score` VALUES (68.0, 3, 3);
INSERT INTO `score` VALUES (99.0, 3, 5);
INSERT INTO `score` VALUES (67.0, 4, 1);
INSERT INTO `score` VALUES (23.0, 4, 3);
INSERT INTO `score` VALUES (56.0, 4, 5);
INSERT INTO `score` VALUES (72.0, 4, 6);
INSERT INTO `score` VALUES (81.0, 5, 1);
INSERT INTO `score` VALUES (37.0, 5, 5);
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
 `id` int(11) PRIMARY KEY AUTO_INCREMENT,
 `sn` int(11) NOT NULL COMMENT '学号',
 `name` varchar(20) NOT NULL COMMENT '姓名',
 `mail` varchar(20) COMMENT 'QQ邮箱'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci 
ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, 50001, '张三', 'zs@qq.com');
INSERT INTO `student` VALUES (2, 50002, '李四', 'ls@qq.com');
INSERT INTO `student` VALUES (3, 50003, '王五', 'ww@qq.com');
INSERT INTO `student` VALUES (4, 50004, '赵六', 'zl@qq.com');
INSERT INTO `student` VALUES (5, 50005, '钱七', 'qq@qq.com');
SET FOREIGN_KEY_CHECKS = 1;

 2.用source命令执行.sql文件的SQL语句(要是绝对路径)

3.查看数据库并查询数据验证导入是否成功 

成功哩:

除了上面这种方式,也可以使用mysql客户端导入

mysql < /root/test_db.sql -uroot -p
//路径是.sql文件的绝对路径

 

可以根据实际的需要选择导入.sql的方式

使用环境:开发-->测试-->生产

MySQL配置文件

⼤多数MySQL程序都可以从选项⽂件(配置⽂件)中读取启动选项。可以在选项⽂件中指定常⽤选项,这样就不⽤在每次运⾏程序时都在命令⾏中输⼊它们。⼤部分选项⽂件都是纯⽂本格式,可以使⽤任何⽂本编辑器创建

如果在使用MySQL的程序时没有指定配置文件的路径,那就会自动读取默认路径下的配置文件

MySQL按一下表格中的顺序查找并读取选项文件,如果文件不存在就粗腰手动创建,读取顺序从上到下,后读取的文件配置的选项优先级更高

选项--defaults-file 可以指定要使⽤的选项⽂件,客⼾端程序会读取并应⽤选项⽂件中的相关配置

# Linux
mysql --defaults-file=/etc/mysql/my.cnf -uroot -p
# windows下
mysql "--defaults-file=C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" -uroot -p

MySQL按以下表格中的顺序查找并读取选项⽂件

如果⽂件不存在则需要⼿动创建。

读取顺序从上到下,后读取的⽂件中配置的选项优先级越⾼

在Windows系统可以读取选项文件

 %WINDIR% 表示Windows目录的位置,可以通过命令查看

BASEDIR 表⽰MySQL的安装⽬录

D:\Program Files\MySQL\MySQL Server 8.0

%APPDATA% 表⽰应⽤程序数据的⽬录 

C:\Users\Lenovo>echo %APPDATA%
# 以下是结果
C:\Users\Lenovo\AppData\Roaming

DATADIR 代表MySQL数据⽬录 

C:\ProgramData\MySQL\MySQL Server 8.0

在Unix和Linux系统上读取的选项文件:

~表示当前用户的主目录

MYSQL_HOME是设置的环境变量路径

DATADIR代表MySQL的数据目录

mysqld-auto.cnf的优先级最⾼For the server,one exception applies: The mysqld-auto.cnf option file in the data directory is processed last, so it takes precedence even over command -line options

运行MySQL程序时在命令行上指定的任何长选项都可以在选项文件中指定,要获取选项列表可以用如下命令:

mysql --help

mysqld --verbose --help

 

一堆,,,刷屏都截不完

 选项文件中指定选项时,省略两个前导破折号,并且每一行表示一个选项

选项文件中的空行会被忽略,非空行可以采用以下形式:

#comment     ;comment

注释⾏以 # 或 ; 开,注释可以从⼀⾏的中间开始

[ group ]设置选项的程序或组的名称,不区分⼤⼩写。如果选项组名称与程序名称相同,则组中的选项专⻔应⽤于该程序,例如, [mysqld] 和 [mysql] 组分别适⽤于mysqld服务端程序和mysql客⼾端程序

opt_name 相当于命令⾏上的选项名

opt_name = value 选项名对应的值,可以使⽤转义序列 \b ,\t ,\n ,\r , \\ 和\s 来表⽰退格符、制表 符、换⾏符、回⻋符、反斜杠和空格字符

tips:

1.选项名称和值的前导和尾随空格会自动删除

2.在Windows系统中设置路径应该使用转义字符

basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0"
# 或
basedir="C:/Program Files/MySQL/MySQL Server 8.0"

 [client]MySQL发行版中所有的客户端程序都会读取并应用这个组下的选项(除了mysqld),在这个组下可以指定适用于所有客户端程序的通用选项(配置用户名和密码,但要确保只有自己才可以访问这个文件以防密码泄漏)

可以这样配置mysql的免密登录:

在当前用户的home目录下创建.my.cnf,并在[client]写入公共配置:

[client]
host=127.0.0.1
port=3306
user=root
password=123456

然后直接运行mysql,不用用户名密码就能直接登录

 

 可以通过[客户端程序名]的形式为不同的客户端程序指定选项,例如[mysql],当运行mysql程序时会读取并应用该组下的配置

[client]
host=127.0.0.1
port=3306
user=root
password=123456
# 设置为必须输⼊密码
[mysql]
password
root@guangchen-vm:~# mysql
Enter password: # 强制要求登录时输⼊密码 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.34 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input 
statement.

为特定的MySQL版本设置选项可以使用[mysqld-5.7]、[mysqld-8.0]的组名

在选项文件中使用!include指令来包含其他选项文件,例如:!include /home/mydir/myopt.cnf

在选项文件中使用!includedir指令来搜索指定目录中的其他选项文件(但不保证目录中选项文件的读取顺序)

tips:

1.!includedir在Unix和Linux操作系统中会搜索指定目录下任何以.cnf为后缀的文件(在Windows中会搜索指定目录下任何以.ini或.cnf为后缀的文件)

2. 只会读取包含文件中当前客户端的组配置(例如当前运行的是mysql程序,那么只会读取[mysql]组中的选项配置)

在Windows中请确保在配置⽂件的最后⼀⾏加⼀个换⾏符,否则该⾏将被忽略

工具包中的其他程序

在命令行中使用MySQL发行版中的其他工具,一些选项是公共的,使用方法和mysql相同

这是一些公共选项:

 

mysqlcheck 

mysqlcheck客户端用于执行表维护,可对表进行分析检查优化或者修复操作

分析:查看表的关键字分布,能让sql生成正确的执行计划(InnoDB,MyISAM,NDB)

检查:检查表的完整性以及数据库表和索引是否损坏(InnoDB,MyISAM,ARCHIVE,CSV)

优化:回收空间、减少碎片、提高IO(InnoDB,MyISAM,ARCHIVE)

修复:修复可能已经损坏的表(MyISAM,ARCHIVE,CSV)

当使用mysqlcheck工具时,MySQL服务器必须在运行状态

执行过程中相应的表会被锁定,其他的操作将会被挂起

如果遇到不支持的引擎会报错

在执行表修复的操作之前对表进行备份(有些情况下数据会丢失)

来试试查一下这个数据库:

mysqlcheck -a test_db -uroot -p

 

这是一些选项:

tips:修复不支持InnoDB存储引擎,如果要修复InnoDB存储引擎的数据,就要InnoDB存储引擎的表转换成MyISAM存储引擎

 InnoDB在优化的过程中,执行了重建的操作,不建议经常(一小时,一天,大多数一个月优化一次就可以了)执行优化操作

mysqlcheck程序的默认功能是对数据表进行检查操作(相当于指定选项--check),如果想要对表进行修复操作,可以通过复制原来的mysqlcheck程序,重命名为mysqlrepair,并运行它:

 mysqldump

作用:mysqldump客户端程序可以执行逻辑备份并生成一组SQL语句,包含原始数据库和表的定义以及表中的数据,以便实现对数据库的简单备份或复制(mysqldump命令可以生成CSV、XML格式的文件)

tips:

1.转储表的时候必须要有SELECT权限

2.转储视图时必须要有SHOW VIEW权限

3.转储触发器时必须要有TRIGGER权限

4.如果没有--single-transaction选项时必须要有LOCK TABLES权限

5.如果没有--no-tablespaces选项时必须要有PROCESS权限

6.重新导入转储文件时也要有相应的权限

7.由于mysqldump是逐行转储数据,所以不适用于大数据量的转储与导入

 这样使用:

mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases

如果在db_name后面没有指定任何的表名,或使用--databases或者--alldatabases选项,那么整个数据库都会被转储

mysqldump中有如下常用选项,可以在命令行中指定,也可以在选项文件中通过[mysqldump]和[client]组进行指定

 

 

可以这样使用:

mysqldump  test_db > /root/dump.sql -uroot -p

 相当于打了个包

 mysqladmin

mysqladmin是一个MySQL服务器管理程序,可以用来检查服务器的配置和当前状态,以及创建和删除数据库...

mysqladmin [options] command [command-arg] [command [command-arg]] ...

这是mysqladmin的常用命令:

 version(显示来自服务器的版本信息)

mysqladmin version -uroot -p

 查看来自服务器的版本信息:

mysqladmin status -uroot -p

 

Uptime:MySQL服务器已经运行的秒数

Threads:活动线程(客户端)的数量

Questions:自服务器启动以来客户端的问题(查询)数

Slow queries:慢SQL的查询数

Opens:服务器已经打开的表数

Flush tables:服务器已经执行flush-*、refresh和reload命令的数量

Open tables当前打开的表数 

 2.create db_name :创建⼀个数据库名为db_name

3. drop db_name :删除名为 db_name 的数据库及其所有表

4. extended-status:显⽰服务器状态变量的值

5. flush-hosts :刷新主机缓存中的所有信息

6. flush-logs [log_type ...] :刷新所有⽇志

7.log_type :中可以提供以下⼀种或多种⽇志类型binary,engine,error,general,relay,slow,多个类型之间⽤空格分隔

7. flush-privileges :重新加载授权表

8. flush-status :清除状态变量

9. flush-tables :刷新所有表

10. flush-threads :刷新线程缓存

11. password new_password : 设置新密码

• 如果密码中有空格必须⽤双引号把密码包裹起来

• password 后可以省略新密码,mysqladmin会在之后提⽰输⼊新密码

• password 做为最后⼀个command时才可以省略密码值,否则下⼀个参数将作为密码被设置 

Warning有可能存在安全问题 

12. ping :检查服务器是否可⽤

13. processlist :显⽰活动服务器线程的列表(默认MySQL服务器可以维护150个活动链接,如果链接被用完,可以kill手动结束休眠时间最长的那个线程)

14. kill id , id ,...:终⽌服务器线程。如果给出了多个线程ID值,则列表中不能有空格

15. reload :重新加载授权表

16. refresh : 刷新所有表

17. shutdown : 停⽌服务器

18. start-replica : 在副本服务器上开始复制,MySQL8.0.26及以后的版本使⽤此命令

19. start-slave : 在副本服务器上开始复制,MySQL8.0.26之前使⽤此命令

20. status : 显⽰简短的服务器状态消息

21. stop-replica : 停⽌副本服务器上的复制,MySQL8.0.26及以后的版本使⽤此命令

22. stop-slave : 停⽌副本服务器上的复制,MySQL8.0.26之前使⽤此命令

23. variables : 显⽰服务器系统变量及其值

看看就得了,记不下来的

荷叶饭你怎么看

mysqlshow

mysqlshow客户端可用于快速查看存在哪些数据库,数据库的表以及表中的列或者索引

具体的操作可以参考一下官方给出的操作文档:

https://dev.mysql.com/doc/refman/8.0/en/mysqlshow.htmlicon-default.png?t=O83Ahttps://dev.mysql.com/doc/refman/8.0/en/mysqlshow.html

和公共选项也差不多

可以使用这样的语法:

mysqlshow [options] [db_name [tbl_name [col_name]]]

 db_name tbl_name col_name可以使用通配符*、?、%或_

如果没有指定数据库,则显示所有数据库名称列表

如果没有指定表,则显示数据库中所有匹配的表

如果没有指定列,则显示表中所有匹配的列和列类型

输出仅显示当前权限可以访问的数据库、表或者列的名称

mysqlshow test_db -uroot -p 

 

mysqlshow test_db student -uroot -p

 

mysqlshow test_db student id -uroot -p

 

mysqldumpslow

在使用MySQL数据库的时候,我们经常进行查询操作,有些查询语句执行的时间非常长,当执行时间超过设定的 阈值的时候,我们称这个查询为慢查询,慢查询的相关信息通常需要用日志记录下来(慢查询日志),mysqldumpslow可以解析慢查询日志文件并汇总其内容

通常情况下,mysqldumpslow会将相似的查询分组并显示摘要输出,一般会把数字和字符串用N和S代替,想要显示真实的值可以使用-a和-n选项

mysqldumpslow [options] [log_file ...]

 常用选项:

这个主要用于优化SQL语句 (因为是慢查询日志)

-s sort_type sort_type可选值:

t,at:按查询时间或平均查询时间排序,默认排序

l,al:按锁占用时间或平均锁占用时间排序

r,ar:按发送的行数或平均发送的行数排序

c:按计数排序

mysqlbinlog

mysqlbinlog可以处理二进制日志文件

什么是二进制文件捏?

我们平时对数据库的修改(增删改),都会被描述成一个事件,每一个事件都会以二进制的形式记录在一个文件里,这个文件就是服务器的二进制文件(Binary Log或binlog)

主要在主从复制的场景里使用,大概就是写入主节点(修改数据时都会把对应的事件记录在binlog里),从节点读取主节点的binlog,解析后执行对应的SQL

mysqlbinlog可以以文本形式显示二进制日志文件中的内容

binlog的默认保存路径是数据目录:

Linux下默认目录:/var/lib/mysql

Windows下默认目录:C:\ProgramData\MySQL\MySQL Server 8.0\Data

这都是二进制日志文件: 

 

这是一些常用的选项:

 

 

--base64-output=value,value有这些允许的值(默认是AUTO):

🐣 AUTO ("automatic")或 UNSPEC ("unspecified")在必要时⾃动显⽰BINLOG语句

如果使⽤mysqlbinlog重新执行⼆进制⽇志⽂件内容,那么使⽤ AUTO 选项是唯⼀安全的⾏为,其他选项值仅⽤于调试或测试,如果 --base64-output 没有指定,那么默认值是 AUTO 🐣 NEVER 不显示BINLOG语句

🐣 DECODE-ROWS 不显示加密内容,可以配合mysqlbinlog的 -verbose 选项以注释的形式只显⽰事件的SQL语句

mysqlslap    

mysqlslap是一个诊断程序,用于模拟MySQL服务器的客户端负载,并报告每个阶段的时间,就好比多个客户端正在访问服务器一样,,,

mysqlslap [options]

可以通过--create或--query选项,指定包含SQL语句的字符串或包含SQL语句的文件

如果指定一个包含SQL语句的文件,默认情况下每行必须包含一条语句(隐式语句分隔符是换行符)

如果要把一条语句分为多行书写,可以使用--delimiter选项指定不同的分隔符

不能在文件中包含注释,因为mysqlslap不能解析注释

mysqlslap运行分为三个阶段:

🐣创建测试数据阶段:创建用于测试的库、表或数据,这个阶段使用单个客户端链接

🐥 运行负载测试阶段:可使用许多客户端链接

🐤清理阶段:执行删除表,断开链接等操作,这个解读那使用单个客户端链接

 这是自定义创建查询语句,创建五十个客户端链接,每个客户端进行两百次select查询(在一行内输入命令):

mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23);" --query="SELECT * FROM a" --concurrency=50 --iterations=200

这是让mysqlslap用包含两个INT列和三个VARCHAR列的自动构建查询的SQL语句,使用五个客户端,每个客户端查询20次

mysqlslap --concurrency=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql

 

这是从指定的文件(但是我还没有这文件,只是展示一下写法)中加载创建、插入和查询SQL语句,SQL文件中的语句以;分割,使用五个客户端,每个客户端查询5次: 

mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";"

常用选项: 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp移动端优惠券! 附源码!!!!

本文为常见的移动端uniapp优惠券&#xff0c;共有6种优惠券样式&#xff08;参考了常见的优惠券&#xff09;&#xff0c;文本内容仅为示例&#xff0c;您可在此基础上调整为你想要的文本 预览效果 通过模拟数据&#xff0c;实现点击使用优惠券让其变为灰色的效果&#xff08;模…

鸿蒙网络编程系列32-基于拦截器的性能监控示例

1. 拦截器简介 在Web开发中拦截器是一种非常有用的模式&#xff0c;它允许开发者在请求发送到服务器之前或响应返回给客户端之前执行一些预处理或后处理操作。这种机制特别适用于需要对所有网络请求或响应进行统一处理的情况&#xff0c;比如添加全局错误处理、请求头的修改、…

Linux中输入和输出基本过程

目录 Linux中输入和输出基本过程 文件内核级缓冲区 何为重定向 子进程与缓冲区 手撕一个简单的shell&#xff08;版本2&#xff09; 判断重定向命令与截取 执行重定向 简单实现stdio.h中的文件相关操作 FILE结构体 fopen函数 fwrite函数 fflush函数 fclose函数 Li…

Vue+TypeScript+SpringBoot的WebSocket基础教学

成品图&#xff1a; 对WebSocket的理解&#xff08;在使用之前建议先了解Tcp&#xff0c;三次握手&#xff0c;四次挥手 &#xff09;&#xff1a; 首先页面与WebSocket建立连接、向WebSocket发送信息、后端WebSocket向所有连接上WebSoket的客户端发送当前信息。 推荐浏览网站…

燕山大学23级经济管理学院 10.18 C语言作业

燕山大学23级经济管理学院 10.18 C语言作业 文章目录 燕山大学23级经济管理学院 10.18 C语言作业1C语言的基本数据类型主要包括以下几种&#xff1a;为什么设计数据类型&#xff1f;数据类型与知识体系的对应使用数据类型时需要考虑的因素 21. 逻辑运算符2. 真值表3. 硬件实现4…

设计模式(UML图、类之间关系、设计原则)

目录 一.类的UML图 1.类的UML图 2.类之间的关系 2.1 继承关系&#xff1a; 2.2关联关系 2.2.1单项关联 2.2.2双向关联 2.2.3自关联 2.3聚合关系 2.4组合模式 2.5依赖关系 二、设计三原则 2.1单一职责原则 2.2开放封闭原则 2.3依赖倒转原则 一.类的UML图 1.类的…

考研篇——数据结构王道3.2.2_队列的顺序实现

目录 1.实现方式说明2.代码实现2.12.1.1 代码12.1.2 代码22.1.3 代码3 2.22.2.1 代码42.2.5 代码52.2.6 代码6 总结 1.实现方式说明 多在选择题中考察 队尾指针&#xff08;rear&#xff09;有两种指向方式&#xff1a; 队尾指针指向队尾元素的位置&#xff0c;队尾指针指向…

9个3D直播场景推荐

在科技日新月异的今天&#xff0c;3D直播技术正逐步渗透至文旅领域&#xff0c;为游客带来前所未有的沉浸式体验。以下是vLive虚拟直播九个精心推荐的文旅3D直播场景&#xff0c;它们不仅展现了各地独特的文化魅力&#xff0c;还通过高科技手段让游客仿佛穿越时空&#xff0c;身…

ArcGIS应用指南:多尺度渔网创建

在GIS中&#xff0c;创建渔网矢量文件是GIS中的一项常见任务&#xff0c;通过将研究区域划分为规则的网格&#xff0c;可以更精细地分析和管理城市空间数据。本文以厦门市行政区为例&#xff0c;详细介绍了如何创建不同尺度的渔网矢量网格&#xff0c;以适应不同区域的发展特点…

代码随想录算法训练营第46期Day35

leetcode.452.用最少数量的箭射爆气球 class Solution { public:static bool cmp(const vector<int>& a,const vector<int>& b){//对Xend进行排序return a[1]<b[1]; } //这个题比较好贪&#xff0c;我们每次射只需要射Xend就可以了&#xff0c;然后用此…

OpenCL内存模型

OpenCL将内存划分成主机内存和设备内存。主机内存可在主机上使用&#xff0c;其并不在OpenCL的定义范围内。使用对应的OpenCL API可以进行主机和设备的数据传输&#xff0c;或者通过共享虚拟内存接口进行内存共享。而设备内存&#xff0c;指定是能在执行内核中使用的内存空间。…

什么是不同类型的微服务测试?

大家好&#xff0c;我是锋哥。今天分享关于【什么是不同类型的微服务测试&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 什么是不同类型的微服务测试&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 微服务架构中的测试可以分为多种类…

【ROS2】构建导航工程

1、ROS小车组成 ROS小车由三大件组成:运动底盘、ROS主控、导航传感器。 1.1 运动底盘 运动底盘的硬件由车轮、电机(带编码器)、电机驱动器、STM32控制器、电池等组成。 涉及的知识点主要为:STM32单片机程序、机器人运动学分析 1)STM32单片机程序 单片机程序框架如下:…

在Linux命令行下载Google Drive大文件(解决Google Drive下载慢的问题)

文章目录 1、使用gdown命令2、复制链接3、替换为Linux下载链接 注意&#xff1a;在Linux命令行进行 1、使用gdown命令 wget只能下载小文件&#xff0c;大文件需要用到gdown pip install gdown# 如果不能够直接安装&#xff0c;使用以下命令 git clone https://github.com/wk…

基于Spring Boot + Vue程序员云书店系统设计与实现

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

MySQL9.0安装教程zip手动安装(Windows)

本章教程&#xff0c;主要介绍如何在Windows上安装MySQL9.0&#xff0c;通过zip方式进行手动安装。 一、下载MySQL压缩包 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 二、解压MySQL压缩包 将下载好的压缩包&#xff0c;进行解压缩&#xff0c;并且将…

要让AI(任何一款绘图AI)把一个己有风格的图片画到一个实物商品上的窍门

本教程适合midjourney, comfyui, stable diffusion 己有图片 希望生成效果 我们希望&#xff0c;在一个现实世界真实IPhone手机上可以有一个这样的小魔女作为一个手机的展示&#xff0c;同时手机处于开机状态&#xff0c;在手机的屏幕上有一个这样的戴帽子的穿蓝色小披风的小…

阿里Dataworks使用循环节点和赋值节点完成对mongodb分表数据同步

背景 需求将MongoDB数据入仓MaxCompute 环境说明 MongoDB 100个Collections&#xff1a;orders_1、orders_2、…、orders_100 前期准备 1、MongoDB数据源配置 需要先保证DW和MongoDB网络是能够联通的&#xff0c;需要现在集成任务中配置MongoDB的数据源信息。 具体可以查…

Java项目-基于springboot框架的学习选课系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

Linux基础命令(入门)

linux 用户 root 用户 一个特殊的管理帐户 也被称为超级用户 root已接近完整的系统控制 对系统损害几乎有无限的能力 除非必要,不要登录为 root 普通&#xff08; 非特权 &#xff09; 用户权限有限 造成损害的能力比较有限 linux的哲学思想&#xff08;优点&#xf…