MySQL程序特别酷

这一篇和上一篇有重合的内容,,我决定从头开始再学一下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.rhkb.cn/news/454476.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS002:软件自定义设置

摘要&#xff1a;本文详细介绍安装arcgis10.2后软件自定义设置内容&#xff0c;包括工具条的启用、扩展模块的启用、如何加载项管理器、快捷键设置、样式管理器的使用以及软件常规设置。 一、工具条的启用 依次点击菜单栏【自定义】->【工具条】&#xff0c;根据工作需求勾…

基于neo4j的医疗图谱问答与展示

找不到好的毕业设计题材&#xff1f;或者对人工智能领域感兴趣却不知道如何下手&#xff1f;这里给大家推荐一款基于Neo4j的医疗图谱问答系统项目&#xff0c;绝对是毕业设计的不二选择。 这个项目依托于医疗领域的知识图谱&#xff0c;为用户提供交流问答系统。它不仅具有知识…

吃透高并发模型与RPC框架,拿下大厂offer!!!

在当前的互联网市场环境下&#xff0c;竞争愈发激烈&#xff0c;内卷现象严重。在这种背景下&#xff0c;「高并发模型和RPC框架已经成为了大型企业面试的重要环节」。你是否曾因为无法回答相关技术问题而感到尴尬&#xff1f;例如&#xff0c;Java岗位的面试中会询问NIO和Reac…

使用JUC包的AtomicXxxFieldUpdater实现更新的原子性

写在前面 本文一起来看下使用JUC包的AtomicXxxxFieldUpdater实现更新的原子性。代码位置如下&#xff1a; 当前有针对int&#xff0c;long&#xff0c;ref三种类型的支持。如果你需要其他类型的支持的话&#xff0c;也可以照葫芦画瓢。 1&#xff1a;例子 1.1&#xff1a;普…

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

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

MATLAB图像重心计算

图像重心&#xff08;或质心&#xff09;计算是计算机视觉和图像处理领域 应用领域广泛&#xff1a;包括医疗,生物&#xff0c;动画&#xff0c;机器人等。 该文章通过灰度转换->二值化->质心计算 以下是代码中涉及的一些数学概念和公式&#xff1a; 灰度转换&#xff1a…

力扣困难题汇总(14道)

题4&#xff08;困难&#xff09;&#xff1a; 思路&#xff1a; 找两数组中位数&#xff0c;这个看起来简单&#xff0c;顺手反应就是数第(mn)/2个&#xff0c;这个难在要求时间复杂度为log(mn)&#xff0c;所以不能这样搞&#xff0c;我的思路是&#xff1a;每次切割长度为较…

Systemd:简介

1号进程 Systemd是linux系统的守护进程&#xff0c;它要管理正在运行的 Linux 主机的许多方面&#xff0c;包括挂载文件系统、管理硬件、处理定时器以及启动和管理生产性主机所需的系统服务。 $ ps -u -p 1 USER PID %CPU %MEM VSZ RSS TTY STAT START TI…

R语言机器学习算法实战系列(九)决策树分类算法 (Decision Trees Classifier)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型模型的决策树预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模…

N9042B UXA 信号分析仪

N9042BUXA 信号分析仪 - 2Hz到50GHz - 使用 N9042B UXA X 系列信号分析仪和各种测量应用软件&#xff0c;可以测试 5G、卫星等应用中的毫米波&#xff08;mmWave&#xff09;创新设计的真实性能。 N9042B 具有是德科技信号分析仪中较大的分析带宽和较深的动态范围&#xff0c…

【云原生】Kubernetes部署Jenkins静动Slave

Kubernetes部署Jenkins静动Slave 文章目录 Kubernetes部署Jenkins静动Slave文档介绍资源列表基础环境一、Jenkins Kubernetes清单文件二、使用静态Slave2.1、安装Kubernetes插件2.2、添加Agent2.3、使用Slave 三、使用动态Slave3.1、添加凭据3.2、配置动态Slave3.3、配置Jenkin…

基于SpringBoot+Vue+uniapp微信小程序的澡堂预订的微信小程序的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

【深度学习中的注意力机制6】11种主流注意力机制112个创新研究paper+代码——加性注意力(Additive Attention)

【深度学习中的注意力机制6】11种主流注意力机制112个创新研究paper代码——加性注意力&#xff08;Additive Attention&#xff09; 【深度学习中的注意力机制6】11种主流注意力机制112个创新研究paper代码——加性注意力&#xff08;Additive Attention&#xff09; 文章目录…

kubernetes(三)

k8s之持久化存储pv&pvc 存储资源管理 在基于k8s容器云平台上&#xff0c;对存储资源的使用需求通常包括以下几方面&#xff1a; 1.应用配置文件、密钥的管理&#xff1b; 2.应用的数据持久化存储&#xff1b; 3.在不同的应用间共享数据存储&#xff1b; k8s支持Volume类…

Spring MVC文件请求处理-MultipartResolver

Spring Boot中的MultipartResolver是一个用于解析multipart/form-data类型请求的策略接口&#xff0c;通常用于文件上传。 对应后端使用MultipartFile对象接收。 RequestMapping("/upload")public String uploadFile(MultipartFile file) throws IOException {Strin…

十一、数据库配置

一、Navicat配置 这个软件需要破解 密码是&#xff1a;123456&#xff1b; 新建连接》新建数据库 创建一个表 保存出现名字设置 双击打开 把id设置为自动递增 这里就相当于每一次向数据库添加一个语句&#xff0c;会自动增长id一次 二、数据库的增删改查 1、Vs 建一个控…

磁编码器的工作原理和特点

目录 概述 1 磁编码器的构造 1.1 霍尔元件 1.2 永磁体 1.3 永磁体和霍尔元件的配置 2 磁编码器的工作原理 2.1 原理介绍 2.2 电气信号转换成角度 2.3 旋转角度传感器IC 3 磁编码器的特点和主要应用 概述 本文主要介绍磁编码器的构造原理&#xff0c;工作特性和应用特…

C/C++函数调用约定:__cdecl、__stdcall、__fastcall和__thiscall

目录 1.引言 2.常见函数调用约定 2.1.__cdecl 2.2.__stdcall 2.3.__fastcall 2.4.__thiscall 3.几种调用约定比较 4.注意事项 1.引言 在C和C编程中&#xff0c;函数调用约定&#xff08;Calling Convention&#xff09;定义了函数如何接收参数、如何返回值以及由谁来清…

【小沐学Golang】基于Go语言搭建静态文件服务器

文章目录 1、简介2、安装2.1 安装版2.2 压缩版 3、基本操作3.1 go run3.2 go build3.3 go install3.4 go env3.5 go module 4、文件服务器4.1 filebrowser4.2 gohttpserver4.3 goFile 5、FAQ5.1 go.mod 为空5.2 超时 结语 1、简介 https://golang.google.cn/ Go语言诞生于2007…

word表格跨页后自动生成的顶部横线【去除方法】

Hello World! Its been a long time. 这一年重心放在了科研、做事、追寻新的经历上&#xff0c;事有正事、琐事、幸事、哀事&#xff0c;内心与认知成长了一些&#xff0c;思想成熟了几分&#xff0c;技艺也有若干收获。不管怎样&#xff0c;来打个卡吧&#xff0c;纪念一下&…