当前位置: 首页 > news >正文

MySQL 常用程序介绍

以下是一些常用的MySQL程序:

程序名作⽤
mysqldMySQL的守护进程即 MySQL 服务器,要使⽤MySQL 服务器 mysqld必须正在运⾏状态
mysql
MySQL客⼾端程序,⽤于交互式输⼊ SQL 语句或以批处理模式从⽂件执⾏SQL的命令⾏⼯具
mysqlcheck⽤于检查、修复、分析和优化表的表维护客⼾端
mysqldump将 MySQL 数据库转储到 SQL、⽂本或 XML ⽂件中的客⼾端
mysqlimport
将⽂本⽂件导⼊到表的客⼾端⼯具
mysqladmin
执⾏管理操作的客⼾端,例如创建或删除数据库、重新加载授权表、将表刷新到磁盘以及重新打开⽇志⽂件。mysqladmin还可以⽤于从服务器检索版本、进程和状态信息。
mysqlshow显⽰数据库、表、列和索引信息的客⼾端
mysqldumpslow
⽤于读取和汇总慢速查询⽇志内容的实⽤程序
mysqlbinlog
从⼆进制⽇志中读取SQL语句的实⽤程序。mysqlbinlog ⽂件中包含的已执⾏SQL语句的⽇志,可⽤于从崩溃中恢复数据。
mysqlslap
客⼾端负载⼯具,模拟多个客⼾端同时访问MySQL服务器,并报告每个阶段的使⽤时间。

mysqld - MySQL 服务器

mysqld也被称为MySQL服务器,是⼀个多线程程序,对数据⽬录进⾏访问管理(包含数据库和
表)。数据⽬录也是其他信息(如⽇志⽂件和状态⽂件)的默认存储位置。当 MySQL 服务器启动时,会侦听指定的端⼝、处理来⾃客⼾端程序的⽹络连接,并管理不同客⼾端对数据库的访问.

mysql - MySQL 命令行客户端

mysql是⼀个简单的 SQL shell, 可以输⼊命令和执⾏SQL语句,当执⾏SQL语句时,查询结果以
ASCII 表格式显⽰.在终端连接MySQL服务器可以使用如下指令:
# ⻓选项格式
mysql --user=user_name --password [db_name]
# 短选项格式
mysql -uuser_name -p [db_name]
# 终端回显,输⼊密码
Enter password: your_password

mysql 客户端选项

选项--⻓格式短格式说明
--host-h
--host= host_name , -h host_name
连接到指定主机上的 MySQL 服务
--port-P

--port=port_num , -Pport_num

TCP/IP 连接使⽤的端⼝号

--user
-u
--user= user_name , -u user_name
⽤于连接到MySQL 服务器的⽤户名
--password
-p
--password[= password ] , -p[ password ]
⽤于连接到MySQL 服务器的密码。可选,如果没有给出, 会提⽰⽤户输⼊
--defaults-file
--defaults-file= file_name
使⽤指定的选项⽂件。如果该⽂件不存在,则会发⽣错误。
--default-character-set
--default-character-set= charset_name
charset_name 将作为 客⼾端和当前连接的默认字符集,例: utf8mb4
--database
-D
--database= db_name , -D db_name
要使⽤的数据库
--compress
-C
--compress , -C
如果可能,压缩客⼾端和服务器之间传输的所有信息
--reconnect
--reconnect
如果客⼾端与服务器的连接丢失,⾃动尝试重新连接
--quick
-q
--quick , -q
不缓存查询结果,收到⼀⾏打印⼀⾏,如果输出被挂起,可能会降低服务器速度
--protocol
--protocol={TCP|SOCKET|PIPE|MEMORY}
⽤于连接到服务器的传输协议, 默认为TCP
--delimiter
--delimiter= 要设置的 SQL语句分隔符
设置SQL语句分隔符。默认值为分号 ( ; )
--execute-e
--execute= statement , -e statement
执⾏指定的SQL语句并退出。
--version-V
--version , -V
显⽰版本信息并退出。
--help-?
--help , -?
显⽰帮助信息并退出。

在命令行中使用选项

命令⾏中指定选项遵循以下规则:
  • 选项应在程序名之后给出
  • 选项以单破折号" - "或双破折号" -- "号开头, - 表⽰短格式, -- 表⽰⻓格式,例如:-?和 --help 都表⽰MySQL 程序显⽰他的帮助消息
  • 选项名称区分⼤⼩写。 -v -V 都是合法的,但含义不同,它们分别是 --verbose --version 选项的相应缩写形式
  • 对于带值的⻓格式选项,通常⽤ = 符号分隔选项名称和值。对于带值的短选项,选项值可以紧跟在选项之后,也可以⽤空格隔开,例如: --host=127.0.0.1 -h127.0.0.1 -h 127.0.0.1 是等价的。 但是对于密码选项的短格式,如果要指定密码,选项与值之间不能有空格,如下所⽰:
mysql -ptest # test表⽰密码,但没有指定要访问的数据库
mysql -p test # test 表⽰指定了访问的数据库,但没有指定密码
  • 对于采⽤数值的选项,该值可以带有后缀 K , M G 以指⽰乘数 1024、1024^2或 1024^3,例如,以下命令告诉 mysqladmin对服务器执⾏ 1024 次 ping,每次 ping 之间休眠 3 秒
mysqladmin --count=1K --sleep=3 ping -uroot -p
  • 在命令⾏中包含空格的选项值必须⽤引号引起来。例如, --execute (or -e ) 选项与mysql⼀起使⽤时,表⽰将⼀个或多个 SQL 语句发送给服务器执⾏并显⽰结果
mysql -u root -p -e "SELECT VERSION();SELECT NOW();"

选项(配置)文件

⼤多数 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%\my.ini , %WINDIR%\my.cnf
全局,%WINDIR%是一个环境变量,它代表Windows操作系统的安装目录,通常等于C:\Windows
C:\my.ini , C:\my.cnf
全局
BASEDIR \my.ini , BASEDIR \my.cnf
全局,其中 BASEDIR指mysql的安装路径,这是最常用的配置文件
defaults-extra-file
如果存在其他选项⽂件可以通过 --defaults-extra-file 选项指定
%APPDATA%\MySQL\.mylogin.cnf
登录路径选项(仅限客⼾端),%APPDATA% 表⽰应⽤程序数据的⽬录,如C:\Users\[用户名]\AppData\Roaming
DATADIR \mysqld-auto.cnf
系统变量 (仅限服务器)
  • 在 Unix 和 Linux 系统上读取的选项⽂件
⽂件名
说明
/etc/my.cnf
全局
/etc/mysql/my.cnf
全局
$MYSQL_HOME/my.cnf
服务器特定选项(仅限服务器),MYSQL_HOME 是设置的环境变量路径
defaults-extra-file
如果存在其他选项⽂件可以通过 --defaults-extra-file 选项指定
~/.my.cnf
⽤⼾特定选项,MYSQL_HOME 是设置的环境变量路径
~/.mylogin.cnf
⽤⼾特定的登录路径选项(仅限客⼾端)
DATADIR /mysqld-auto.cnf
系统变量 (仅限服务器),D ATADIR 代表MySQL数据⽬录
选项⽂件中指定选项时,省略两个前导破折号,并且每⼀⾏表⽰⼀个选项,例如: --quick --host=127.0.0.1 在选项⽂件中应表⽰成 quick 和 host=127.0.0.1
选项⽂件中的空⾏会被忽略。⾮空⾏可以采⽤以下任何形式:
# comment ,   ; comment
注释⾏以 # ; 开,注释可以从⼀⾏的中间开始
[ group ]
设置选项的程序或组的名称,不区分⼤⼩写。如果选项组名称与程序名称相同,则组中的选项专⻔应⽤于该程序,例如, [mysqld] [mysql] 组分别适⽤于mysqld服务端程序和 mysql客⼾端程序
[client] MySQL发⾏版中所有客⼾端程序都会读取并应⽤这个组下的选项(除了mysqld),在这个组下可以指定适⽤于所有客⼾端程序的通⽤选项,例如配置⽤⼾名和密码(但要确保只有⾃⼰才可以访问这个⽂件以防⽌密码泄漏)。
opt_name
相当于命令⾏上的选项名
opt_name = value
选项名对应的值,可以使⽤转义序列 \b , \t , \n , \r , \\ \s 来表⽰退格符、制表符、换⾏符、回⻋符、反斜杠和空格字符
在选项⽂件中使⽤ !include 指令来包含其他选项⽂件,例如: !include /home/mydir/myopt.cnf
案例:设置客⼾端全局编码格式
  • 在Linux下编辑全局配置⽂件默认位置 /etc/mysql/my.cnf ,初始内容如下:
root@hcss-ecs-9734:/# vim etc/mysql/my.cnf# Copyright (c) 2015, 2024, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
# ... 省略
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
# 以下区域可以根据需要进⾏配置
  • 在已有内容下⽅输⼊相应的配置,我们要为客⼾端设置全局的编码格式为utf8mb4, 那么在[client] 节点下指定相应的选项即可
[client] # 所有客⼾端程序者会读取这个节点下的配置信息
default-character-set=utf8mb4 # 指定编码格式为utf8mb4

从.sql⽂件执⾏ SQL 语句

使⽤source命令导⼊
有时候我们需要从.sql ⽂件执⾏⼀些SQL语句,⽐如要把⼀个数据库从⼀台服务器A复制到另⼀台服务器B上,那么可以先从服务器A导出数据到.sql⽂件,然后在服务器B执⾏这个.sql⽂件,我们可以⽤help命令查看命令列表,可以看到有⼀个source 命令如下所⽰:
mysql> help# ... 省略
source    (\.) Execute an SQL script file. Takes a file name as an argument.
# ... 省略
下⾯我们演⽰⼀下source命令的使⽤⽅法
  • 准备要执⾏的.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, '计算机系2019级1班', '学习了计算机原理、C和Java语
⾔、数据结构和算法');
INSERT INTO `classes` VALUES (2, '中⽂系2019级3班', '学习了中国传统⽂学');
INSERT INTO `classes` VALUES (3, '⾃动化2019级5班', '学习了机械⾃动化');
-- ----------------------------
-- 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@bit.com');
INSERT INTO `student` VALUES (2, 50002, '李四', 'ls@bit.com');
INSERT INTO `student` VALUES (3, 50003, '王五', 'ww@bit.com');
INSERT INTO `student` VALUES (4, 50004, '赵六', 'zl@bit.com');
INSERT INTO `student` VALUES (5, 50005, '钱七', 'qq@bit.com');
SET FOREIGN_KEY_CHECKS = 1;
  • 确定.sql⽂件的绝对路径:/home/lbk/test_db/database.sql
  • 连接数据库查看已有数据库

  • 使⽤source命令执⾏.sql⽂件的SQL语句
source /home/lbk/test_db/database.sql
  • 查看数据库并查询数据,验证导⼊是否成功

使⽤mysql客⼾端导⼊

直接使⽤mysql客⼾端程序导⼊.sql⽂件并执⾏相应的SQL语句,可以使⽤以下命令

mysql db_name < text_file # 在指定的数据库下执⾏SQL,前提是数据库必须提前建⽴好
mysql < text_file # 不指定数据库.sql中必须有USE [database_name],来指定要操作的数据库

mysqlcheck - 表维护程序

mysqlcheck客⼾端⽤于执⾏表维护,可以对表进⾏:分析、检查、优化或修复操作。
  • 分析的作⽤是查看表的关键字分布,能够让 sql ⽣成正确的执⾏计划(⽀持 InnoDB,MyISAM,NDB)
  • 检查的作⽤是检查表的完整性以及数据库表和索引是否损坏(⽀持 InnoDB,MyISAM, ARCHIVE,CSV)
  • 优化的作⽤是回收空间、减少碎⽚、提⾼I/O(⽀持 InnoDB,MyISAM,ARCHIVE)
  • 修复的作⽤是修复可能已经损坏的表(⽀持 MyISAM,ARCHIVE,CSV)
⼀般通过以下三种⽅法使⽤mysqlcheck
mysqlcheck [options] db_name [tbl_name ...]
mysqlcheck [options] --databases db_name ...
mysqlcheck [options] --all-databases
如果在 db_name 后没有指定任何表名,或者使⽤ --databases --all-databases 选项,那么整个数据库都会被检查。

mysqlcheck有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过 [mysqlcheck] 和 [client] 组进⾏指定
选项
说明
--analyze,-a
分析表
--auto-repair如果检查的表有损坏,则⾃动修复它。所有表都检查过之后才进⾏必要的修复
--check,-c
检查表中的错误。mysqlcheck的默认操作
--check-only-changed,-C
仅检查⾃上次检查以来更改过的表
--databases,-B
--databases db_name 多个数据库名⽤空格隔开,处理指定数据库中的所有表
--force, -f
即使发⽣SQL错误也要继续
--optimize,-o
优化表
--repair,-r执⾏可能进⾏的任务修复操作,除了唯⼀键
--skip-database
--skip-database= db_name
不需要执⾏检查的数据库名(区分⼤⼩写)
--tables
--tables= table_name 多个表名⽤空格隔开
在选项之后的所有名称参数都被视为表名。
--use-frm
对于MyISAM表的修复操作

使用如下:

  • 分析test_db数据库
mysqlcheck -a test_db

  • 检查test_db数据库
mysqlcheck -a test_db
  • 修复test_db数据库
mysqlcheck -r test_db
我们可以知道,修复不支持InnoDB存储引擎,如果要修复InnoDB存储引擎的数据,我们需要把存储引擎更换为MyIsam。

mysqldump - 数据库备份程序

mysqldump客⼾端程序可以执⾏逻辑备份并⽣成⼀组SQL语句,其中包含原始数据库和表的定义
以及表中的数据,以便实现对数据库的简单备份或复制。mysqldump命令可以⽣成CSV、或XML格式的⽂件。
mysqldump的⽅法通常有以下使⽤,可以转储⼀个或多个表或数据库,如下所⽰:
mysqldump [options] db_name [tbl_name ...] > 备份文件的路径
mysqldump [options] --databases db_name ... > 备份文件的路径
mysqldump [options] --all-databases > 备份文件的路径
如果在 db_name 后没有指定任何表名,或者使⽤ --databases --all-databases 选项,那么整个数据库都会被转储。
mysqldump有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过 [mysqldump] 和[client] 组进⾏指定
选项
说明
--add-drop-database
在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句
--add-drop-table
在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--add-drop-trigger
在每个 CREATE TRIGGER 语句之前添加 DROP TRIGGER 语句
--add-locks
LOCK TABLES UNLOCK TABLES 语句包裹每个表转储
--all-databases,-A
转储所有数据库中的所有表
--databases,-B
--databases= db_name 多个数据库名⽤空格隔开,将参数解释为数据库名称并转储所有的表
--comments,-i
添加注释到转储⽂件
--ignore-table
--ignore-table =db_name.table_name 多个表⽤空格隔开
不转储给定的表
--no-data,-d
不转储表内容
--triggers
转储每个表中的触发器
--xml,-X
以XML格式输出

使用案例

mysqldump test_db > /root/dump.sql

然后我们就会有/root/dump.sql文件,其中包含了test_dp数据库中所有的表及其数据,之后我们就可以在mysql中通过 source 命令执行/root/dump.sql文件,从而实现复制了test_dp数据库。

mysqladmin - MySQL 服务器管理程序

mysqladmin 是⼀个执⾏管理操作的客⼾端。可以⽤来检查服务器的配置和当前状态,以及创建和删除数据库等。
mysqladmin 可以使⽤以下语法:
mysqladmin [options] command [command-arg] [command [command-arg]] ...
语法中的command 表⽰命令,有些命令后⾯需要跟上⼀个参数,如下列出了mysqladmin 的常⽤命令:
选项
说明
version
显⽰来⾃服务器的版本信息
create db_name
创建⼀个数据库名为 db_name 
drop db_name删除名为 db_name 的数据库及其所有表
extended-status
显⽰服务器状态变量的值
password new_password
设置新密码,password 后可以省略新密码,mysqladmin会在之后提⽰输⼊新密码
processlist
显⽰活动服务器线程的列表
kill id , id ,...
终⽌服务器线程。如果给出了多个线程ID值,则列表中不能有空格。
shutdown
停⽌服务器

mysqlshow - 显⽰数据库、表和列信息

mysqlshow 客⼾端可⽤于快速查看存在哪些数据库、数据库中的表以及表中的列或索引。mysqlshow 可以使⽤以下语法:

mysqlshow [options] [db_name [tbl_name [col_name]]]
  • db_name tbl_name col_name 可以使⽤通配符 *  _
  • 如果没有指定数据库,则显⽰所有数据库名称列表;如果没有指定表,则显⽰数据库中所有匹配的表;如果没有指定列,则显⽰表中所有匹配的列和列类型。
  • 输出仅显⽰当前权限可以访问的数据库、表或列的名称。

使用如下:

mysqlshow test_db;

mysqldumpslow - 总结慢查询⽇志⽂件

在平时使⽤MySQL数据库时,经常进⾏查询操作,有些查询语句执⾏的时间⾮常⻓,当执⾏时间超过设定的阈值时,我们称这个查询为慢查询,慢查询的相关信息通常需要⽤⽇志记录下来称为慢查询⽇志,mysqldumpslow可以解析慢查询⽇志⽂件并汇总其内容。

例如,我们可以使用mysqladmin查看当前有多少条慢查询

mysqladmin status

我们可以看到当前一共有三条慢查询,我们在mysql中可以用如下命令查看有关慢查询的各种信息,例如设定的执行时间阈值,慢查询日志文件是否开启,及慢查询日志文件的位置。

show variables like '%query%';

通常情况下,mysqldumpslow 会将相似的查询分组并显⽰摘要输出,⼀般会把数字和字符串⽤ N
"S" 代替,要想显⽰真实的值可以使⽤ -a 和 -n 选项。
mysqldumpslow 可以使⽤以下语法
mysqldumpslow [options] [log_file ...]
由于通过 show variables like '%query%'; 命令我们已经知道慢查询日志文件在 /var/lib/mysql/hcss-ecs-9734-slow.log ,但是我们可以看到 slow_query_log 是关闭的,所以我们需要在配置文件 /etc/mysql/my.cnf 中添加如下配置,使用如下命令
[mysqld]
slow_query_log = 1

之后我们就可以使用如下命令查看慢查询日志文件里的内容

mysqldumpslow /var/lib/mysql/hcss-ecs-9734-slow.log

mysqldumpslow 的常⽤选项

选项
说明
-a
不⽤ N 'S' 代替numbers和String
-n N
在名称中包含N个以上的数字⽤ N 代替
-g pattern
仅考虑与指定模式匹配的慢查询
-h host_name
与*-slow.log⽂件名对应的MySQL服务器主机名,可以包含通配符。默认值是*(匹配所有)。
-i name
服务器实例的名称
-l
不要从总时间中减去锁占⽤的时间
-r倒序顺列
-s sort_type
如何对输出进⾏排序
-t N
显⽰输出中的前N个查询
-s sort_type sort_type可选的值如下所⽰:
  • t , at : 按查询时间或平均查询时间排序,默认排序
  • l , al : 按锁占⽤时间或平均锁占⽤时间排序
  • r , ar : 按发送的⾏数或平均发送的⾏数排序
  • c : 按计数排序

mysqlbinlog - 处理⼆进制⽇志⽂件

我们平时对数据库的修改,包括对数据的增删改,都会被描述成⼀个"事件",每个"事件"都会以⼆进制形式记录在⼀个⽂件⾥,这个⽂件就是服务器的⼆进制⽇志⽂件,称为Binary Log或binlog。
mysqlbinlog 能够以⽂本格式显⽰⼆进制⽇志⽂件中的内容。
binlog的默认保存路径是数据⽬录:
  • Linux下默认⽬录:/var/lib/mysql
  • Windows下默认⽬录:MySQL程序的安装路径\Data
binlog是以 .00000n 结尾命名的⽂件,n不断递增
mysqlbinlog 可以使⽤以下语法
mysqlbinlog [options] log_file ...
例如要显⽰名为 binlog.000011  ⼆进制⽇志⽂件的内容,可以使⽤以下命令:
mysqlbinlog binlog.000011
mysqlbinlog 有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过 [mysqlbinlog] 和 [client] 组进⾏指定
选项说明
--offset, -o
--offset= N -o N
跳过⽇志中的前N条记录
--result-file, -r
--result-file= name , -r name
输出的⽬标⽂件
--server-id
仅显⽰指定服务器ID创建的事件

mysqlslap - 负载仿真客⼾端

mysqlslap是⼀个诊断程序,⽤于模拟MySQL服务器的客⼾端负载,并报告每个阶段的时间,就好⽐多个客⼾端正在访问服务器⼀样。
mysqlslap可以使⽤以下语法
mysqlslap [options]
  • 可以通过 --create --query 选项,指定包含SQL语句的字符串或包含SQL语句的⽂件
  • 如果指定⼀个包含SQL语句的⽂件,默认情况下每⾏必须包含⼀条语句(也就是说,隐式语句分隔符是换⾏符)
  • 如果要把⼀条语句分为多⾏书写,可以使⽤ --delimiter 选项指定不同的分隔符
  • 不能在⽂件中包含注释,因为mysqlslap不能解析注释。
mysqlslap运⾏分为三个阶段:
a. 创建测试数据阶段:创建⽤于测试的库、表或数据,这个阶段使⽤单个客⼾端连接
b. 运⾏负载测试阶段,这个阶段可以使⽤许多客⼾端连接
c. 清理阶段:执⾏删除表,断开连接等操作,这个阶段使⽤单个客⼾端连接
mysqlslap 有如下常⽤选项,可以在命令⾏中指定,也可以在选项⽂件中通过 [mysqlslap]
[client] 组进⾏指定
选项说明
--create

--create=value

其中value等于创建的SQL语句或.sql文件

--query -q

--query=value

其中value等于创建的SQL语句或.sql文件

--concurrency, -c
--concurrency= N , -c N
要模拟并⾏客⼾端的数量
--no-drop
运⾏完测试后不删除创建的数据库
--iterations -i
--iterations= N , -i N
每个客⼾端运⾏测试的次数
--auto-generate-sql-add-
autoincremen
在⾃动⽣成的表中添加 AUTO_INCREMENT
--auto-generate-sql-
write-number
--auto-generate-sql-write-number= N
要执⾏多少⾏插⼊,默认值是100
案例
  • 提供⾃定义的创建和查询语句,创建50个客⼾端连接,每个客⼾端进⾏200次 select 查询(在⼀⾏内输⼊命令)。
mysqlslap --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23);" --query="SELECT * FROM a" --concurrency=50 --iterations=200
  • 从指定的⽂件中加载创建、插⼊和查询SQL语句。SQL⽂件中的语句以 ";" 分隔。使⽤5个客⼾端,每个客⼾端查询5次。
mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";

相关文章:

MySQL 常用程序介绍

以下是一些常用的MySQL程序&#xff1a; 程序名作⽤mysqldMySQL的守护进程即 MySQL 服务器&#xff0c;要使⽤MySQL 服务器 mysqld必须正在运⾏状态mysql MySQL客⼾端程序&#xff0c;⽤于交互式输⼊ SQL 语句或以批处理模式从⽂件执⾏SQL的命令⾏⼯具 mysqlcheck⽤于检查、修…...

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1)

DevOps实战&#xff1a;用Kubernetes和Argo打造自动化CI/CD流程&#xff08;1&#xff09; 架构 架构图 本设计方案的目标是在一台阿里云ECS服务器上搭建一个轻量级的Kubernetes服务k3s节点&#xff0c;并基于Argo搭建一套完整的DevOps CI/CD服务平台&#xff0c;包括Argo CD…...

RBAC模型

RBAC模型 1.概念 RBAC&#xff1a;role based access control&#xff0c;基于角色的权限控制 三个主体 - 用户 - 角色 - 权限 授权的本质是对用户授权角色&#xff0c;假设系统的用户数量特别多的话可以对用户设置用户组。 2.RBAC表基本设计 用户表 角色表 权限表 …...

CultureLLM 与 CulturePark:增强大语言模型对多元文化的理解

本文介绍团队刚刚在加拿大温哥华召开的顶会NeurIPS 2024上发表的两篇系列工作&#xff1a;CultureLLM 和CulturePark。此项研究以生成文化数据并训练文化专有模型为主要手段&#xff0c;旨在提升已有基础模型的多文化理解能力&#xff0c;使得其在认知、偏见、价值观、在线教育…...

sentinel学习笔记6-限流降级(上)

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏&#xff0c;写的好值得推荐&#xff0c;我整理的有所删减&#xff0c;推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html sentinel 实现限流降级、熔断降级、黑白名单限流降级、系统自适应…...

redis cluster集群

华子目录 什么是redis集群redis cluster的体系架构什么是数据sharding&#xff1f;什么是hash tag集群中删除或新增节点&#xff0c;数据如何迁移&#xff1f;redis集群如何使用gossip通信?定义meet信息ping消息pong消息fail消息&#xff08;不是用gossip协议实现的&#xff0…...

设计模式从入门到精通之(二)抽象工厂模式

抽象工厂模式&#xff1a;不同工厂背后的协作秘密 在上一期中&#xff0c;我们聊到了工厂模式&#xff0c;讲述了如何用一家咖啡店来帮我们制作不同类型的咖啡。那么&#xff0c;如果你不仅需要咖啡&#xff0c;还需要配套的甜品&#xff0c;比如蛋糕或饼干&#xff0c;这时应该…...

LeetCode:404.左叶子之和

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;404.左叶子之和 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: …...

Java包装类型的缓存

Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。 Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128&#xff0c;127] 的相应类型的缓存数据&#xff0c;Character 创建了数值在 [0,127] 范围的缓存数据&#xff0c;Boolean 直接返回 True or Fal…...

2024网络安全学习路线 非常详细 推荐学习

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#xff0c;有些人会倒在学习 linux 系统及命令的路上&#xff…...

【ES6复习笔记】数值扩展(16)

介绍 在 JavaScript 中&#xff0c;数值扩展提供了一些额外的功能&#xff0c;使得处理数值变得更加方便。本教程将介绍一些常用的数值扩展方法和属性。 1. Number.EPSILON Number.EPSILON 是 JavaScript 表示的最小精度。它的值接近于 2.2204460492503130808472633361816E-…...

【mybatis】详解 # 和 $ 的区别,两者分别适用于哪种场景,使用 $ 不当会造成什么影响

# 和 $ 的区别 在MyBatis中&#xff0c;# 和 $ 是用来处理参数的两种不同方式&#xff0c;它们之间有一些重要的区别&#xff1a; # 符号&#xff1a; # 是用来进行参数占位符的&#xff0c;它会进行 SQL 注入防护。使用 # 时&#xff0c;MyBatis 会将参数值进行预处理&…...

【MySQL】索引 面试题

文章目录 适合创建索引的情况创建索引的注意事项MySQL中不适合创建索引的情况索引失效的常见情况 索引定义与作用 索引是帮助MySQL高效获取数据的有序数据结构&#xff0c;通过维护特定查找算法的数据结构&#xff08;如B树&#xff09;&#xff0c;以某种方式引用数据&#xf…...

QT调用Sqlite数据库

QT设计UI界面&#xff0c;后台访问数据库&#xff0c;实现数据库数据的增删改查。 零售商店系统 数据库表&#xff1a; 分别是顾客表&#xff0c;订单详情表&#xff0c;订单表&#xff0c;商品表 表内字段详情如下&#xff1a; 在QT的Pro文件中添加sql&#xff0c;然后添加头…...

Flutter富文本实现学习

Flutter 代码如何实现一个带有富文本显示和交互的页面。 前置知识点学习 RealRichText RealRichText 和 ImageSpan 不是 Flutter 框架中内置的组件&#xff0c;而是自定义的组件或来自第三方库。这些组件的实现可以提供比标准 RichText 更丰富的功能&#xff0c;比如在富文本…...

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 4

大家好&#xff0c;我是Q&#xff0c;邮箱&#xff1a;1042484520qq.com。 今天我们在上几讲的基础上再扩展下 Cabin Wi-Fi 的功能需求&#xff0c;讲讲如何使能 5G TCU Wi-Fi STA Bridge 模式。 参考&#xff1a; 实现某海外大型车企&#xff08;T&#xff09;Cabin Wi-Fi 需求…...

【GeekBand】C++设计模式笔记15_Proxy_代理模式

1. “接口隔离” 模式 在组件构建过程中&#xff0c;某些接口之间直接的依赖常常会带来很多问题&#xff0c;甚至根本无法实现。采用添加一层间接&#xff08;稳定&#xff09;接口&#xff0c;来隔离本来互相紧密关联的接口是一种常见的解决方案。典型模式 FacadeProxyAdapte…...

项目练习:若依系统的svg-icon功能实现

文章目录 一、svg图片准备二、自定义Svg组件三、svg插件开发四、Svg组件使用 一、svg图片准备 src/assets/icons/svg 其中svg目录里&#xff0c;存放了所需要的图片 index.js import Vue from vue import SvgIcon from /components/SvgIcon// svg component// register glob…...

【踩坑/Linux】Vmware中的Ubuntu虚拟机无法访问互联网

Vmware中的Ubuntu虚拟机无法访问互联网 首先前提是我的系统是Ubuntu 16.04系统&#xff0c;vmware workstation选择的是NAT模式&#xff0c;虚拟机内连不上网络 ping www.baidu.com ping: unknown host www.baidu.com首先检查 DNS 解析服务&#xff1a;在虚拟机中打开命令提示…...

深入了解SpringIoc(续篇)

目录 注入 Bean 的方式有哪些? 构造函数注入还是 Setter 注入? Bean 的作用域有哪些? Bean 是线程安全的吗? Bean 的生命周期了解么? 注入 Bean 的方式有哪些? 依赖注入 (Dependency Injection, DI) 的常见方式&#xff1a; 构造函数注入&#xff1a;通过类的构造函…...

嵌入式硬件面试题

1、请问什么是通孔、盲孔和埋孔&#xff1f;孔径多大可以做机械孔&#xff0c;孔径多小必须做激光孔&#xff1f;请问激光微型孔可以直接打在元件焊盘上吗&#xff0c;为什么&#xff1f; 通孔是贯穿整个PCB的过孔&#xff0c;盲孔是从PCB表层连接到内层的过孔&#xff0c;埋孔…...

散斑/横向剪切/迈克尔逊/干涉条纹仿真技术分析

摘要 本博文提供了多种数据类型的干涉条纹仿真&#xff0c;并展示了它们对应的散斑干涉条纹。还分别给出了横向剪切干涉以及剪切散斑干涉条纹的仿真。 一、迈克尔逊干涉与散斑干涉仿真 下图为干涉条纹与对应的散斑干涉条纹的仿真示意图。其中&#xff0c;干涉条纹可认为是源…...

ViiTor实时翻译 2.2.1 | 完全免费的高识别率同声传译软件

ViiTor实时翻译是一款完全免费的实时语音翻译和同声传译软件&#xff0c;支持即时翻译、对话翻译、语音转文字、文本语音合成和AR翻译等功能。它的语音识别和翻译准确率特别高&#xff0c;速度非常快&#xff0c;音质高&#xff0c;并支持6种音色切换。该软件简单易用&#xff…...

uniapp实现为微信小程序扫一扫的功能

引言 随着微信小程序的快速发展,越来越多的开发者开始关注和学习微信小程序的开发。其中,微信小程序的扫一扫功能是非常常用且实用的功能之一。通过扫描二维码,用户可以获取到相关的信息或者实现特定的功能。 正文 在过去,开发者需要使用微信开发者工具以及相关的开发文档…...

ospf 的 状态机详解

OSPF&#xff08;开放最短路径优先&#xff0c;Open Shortest Path First&#xff09;协议的状态机是其核心部分之一&#xff0c;用于确保路由器之间的邻接关系&#xff08;neighbor relationship&#xff09;建立和路由信息的交换。OSPF的状态机模型由多个状态组成&#xff0c…...

ElementPlus 自定义封装 el-date-picker 的快捷功能

文章目录 需求分析 需求 分析 我们看到官网上给出的案例如下&#xff0c;但是不太满足我们用户想要的快捷功能&#xff0c;因为不太多&#xff0c;因此需要我们自己封装一些&#xff0c;方法如下 外部自定义该组件的快捷内容 export const getPickerOptions () > {cons…...

【面试系列】深入浅出 Spring Boot

熟悉SpringBoot&#xff0c;对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解&#xff1b; 面试题 Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f;Spring Boot的自动配置原理是什么&#xff1f;你如何理解 Spring Boot 配置…...

太阳能LED路灯智能控制系统(论文+源码)

1系统的功能及方案设计 本次课题为太阳能LED路灯智能控制系统&#xff0c;其系统整体架构如图2.1所示&#xff0c;太阳能板通过TP4056充电模块给锂电池进行充电&#xff0c;电池通过HX3001升压模块进行升压到5V给整个控制系统进行供电&#xff0c;控制系统由AT89C52单片机作为…...

使用 PyQt5 构建高效的文件分类与管理工具

当我们处理大量图片或文件时&#xff0c;经常会需要一款方便、高效的工具来快速分类、整理和管理它们。今天&#xff0c;我将分享一个用 PyQt5 构建的实用项目&#xff0c;涵盖图片分类、文件夹管理、撤销功能&#xff0c;以及动态界面操作的实现。从设计到代码细节&#xff0c…...

谷歌浏览器 Chrome 提示:此扩展程序可能很快将不再受支持

问题现象 在Chrome 高版本上的扩展管理页面&#xff08;地址栏输入chrome://extensions/或者从界面进入&#xff09;&#xff1a; &#xff0c; 可以查看到扩展的情况。 问题现象大致如图: 问题原因 出现此问题的根本原因在于&#xff1a;谷歌浏览器本身的扩展机制发生了…...

肿瘤电场仪疗法原理:科技之光,照亮抗癌之路

在医疗科技日新月异的今天&#xff0c;肿瘤电场仪疗法作为一种创新的无创治疗手段&#xff0c;正以其独特的物理机制和生物效应&#xff0c;为患者带来了新的治疗选择和希望。本文将深入探讨肿瘤电场仪疗法的原理&#xff0c;揭示其如何在不伤害正常组织的前提下&#xff0c;精…...

scala基础学习_运算符

文章目录 scala运算符算术运算符关系运算符逻辑运算符位运算符其他运算符赋值运算符 scala运算符 在 Scala 中&#xff0c;运算符通常被定义为方法。这意味着你可以将运算符视为对象上的方法调用。以下是一些常用的运算符及其对应的操作&#xff1a; 算术运算符 &#xff1a…...

人工智能与区块链的碰撞:双剑合璧的创新前景

引言 人工智能&#xff08;AI&#xff09;与区块链技术&#xff0c;这两项曾经各自独立发展的前沿科技&#xff0c;如今正逐步走向融合。人工智能通过强大的数据处理能力和智能决策能力&#xff0c;在各个领域掀起了革命性的变革&#xff1b;而区块链凭借其去中心化、不可篡改的…...

信创数据防泄漏中信创沙箱是什么样的安全方案

在信息化与工业化融合创新&#xff08;信创&#xff09;的快速发展中&#xff0c;企业面临着日益复杂的数据安全挑战。SDC沙盒技术以其独特的安全机制和先进的设计理念&#xff0c;为信创环境提供了强有力的数据保护支持。以下是SDC沙盒在信创领域支持能力的几个关键侧重点&…...

在不同操作系统上安装 PostgreSQL

title: 在不同操作系统上安装 PostgreSQL date: 2024/12/26 updated: 2024/12/26 author: cmdragon excerpt: PostgreSQL 是当今最受欢迎的开源关系数据库管理系统之一,由于其强大的功能和灵活性,广泛应用于不同的行业和应用场景。在开始使用 PostgreSQL 之前,用户需要了…...

Linux下编译 libwebsockets简介和使用示例

目录 1&#xff1a;简单介绍&#xff1a; 2&#xff1a;项目地址 3&#xff1a;编译 3.1&#xff1a;集成介绍 3.2&#xff1a;编译 4&#xff1a;客户端服务端示例&#xff1a; 4.1 客户端示例 4.2 服务端示例&#xff1a; 1&#xff1a;简单介绍&#xff1a; Linux下…...

5G CPE接口扩展之轻量型多口千兆路由器小板选型

多口千兆路由器小板选型 方案一: 集成式5口千兆WIFI路由器小板方案二:交换板 + USBwifiUSB WIFI选型一USBwifi选型二:四口千兆选型一四口千兆选型二:四口千兆选型三:部分5G CPE主板不支持Wifi,并且网口数量较少,可采用堆叠方式进行网口和wifi功能 扩展,本文推荐一些路由…...

青少年编程与数学 02-005 移动Web编程基础 02课题、视口与像素

青少年编程与数学 02-005 移动Web编程基础 02课题、视口与像素 一、视口二、布局视口&#xff08;Layout Viewport&#xff09;三、视觉视口&#xff08;Visual Viewport&#xff09;四、理想视口&#xff08;Ideal Viewport&#xff09;五、视口设置关键属性示例代码示例1&…...

深度学习blog-Transformer-注意力机制和编码器解码器

注意力机制&#xff1a;当我们看一个图像或者听一段音频时&#xff0c;会根据自己的需求&#xff0c;集中注意力在关键元素上&#xff0c;以获取相关信息。 同样地&#xff0c;注意力机制中的模型也会根据输入的不同部分&#xff0c;给它们不同的权重&#xff0c;并集中注意力在…...

【论文投稿】Python 网络爬虫:探秘网页数据抓取的奇妙世界

【IEEE出版|广东工业大学主办】第五届神经网络、信息与通信工程国际学术会议&#xff08;NNICE 2025&#xff09;_艾思科蓝_学术一站式服务平台 目录 前言 一、Python—— 网络爬虫的绝佳拍档 二、网络爬虫基础&#xff1a;揭开神秘面纱 &#xff08;一&#xff09;工作原…...

【总结整理】 神经网络与深度学习 邱锡鹏 课后习题答案 扩展阅读链接

本文主要针对神经网络神经网络邱锡鹏 2~8 章的课后习题进行理解的过程中&#xff0c;搜索到的讲的会比较透彻的链接整理。适合有一定基础但是想了解更细的人阅读。 主要参考书籍 首先是本书pdf可在神经网络与深度学习获取&#xff1b; 主要参考的课后习题答案为nndl/solution…...

华为手机建议使用adb卸载的app

按需求自行卸载 echo 卸载智慧搜索 adb shell pm uninstall -k --user 0 com.huawei.search echo 卸载智慧助手 adb shell pm uninstall -k --user 0 com.huawei.intelligent echo 卸载讯飞语音引擎 adb shell pm uninstall -k --user 0 com.iflytek.speechsuite echo 卸载快应…...

找到一个linux静态库动态库的好资料.2

# 正文 继续整理从这个页面学到的东西&#xff1a;https://tldp.org/HOWTO/Program-Library-HOWTO 这一篇主要参考这俩&#xff1a; https://tldp.org/HOWTO/Program-Library-HOWTO/introduction.html https://tldp.org/HOWTO/Program-Library-HOWTO/static-libraries.html 这…...

存储块的原理与创建

目录 问题概述 malloc和free 固定块大小分配 设计原理 设计实现 为RTOS提供内存管理与回收机制 问题概述 malloc和free extern void *malloc(unsigned int num_bytes); //malloc向系统申请分配指定size个字节的内存空间。 //返回类型是void *类型 extern void free(void *ptr);…...

RabbitMQ工作模式(详解 工作模式:简单队列、工作队列、公平分发以及消息应答和消息持久化)

文章目录 十.RabbitMQ10.1 简单队列实现10.2 Work 模式&#xff08;工作队列&#xff09;10.3 公平分发10.4 RabbitMQ 消息应答与消息持久化消息应答概念配置 消息持久化概念配置 十.RabbitMQ 10.1 简单队列实现 简单队列通常指的是一个基本的消息队列&#xff0c;它可以用于…...

电脑提示报错NetLoad.dll文件丢失或损坏?是什么原因?

一、NetLoad.dll文件丢失或损坏的根源 程序安装不完整&#xff1a;某些程序在安装过程中可能因为磁盘错误、网络中断或安装程序本身的缺陷&#xff0c;导致NetLoad.dll文件未能正确安装或复制。 恶意软件攻击&#xff1a;病毒、木马等恶意软件可能会篡改或删除系统文件&#x…...

【物联网技术与应用】实验15:电位器传感器实验

实验15 电位器传感器实验 【实验介绍】 电位器可以帮助控制Arduino板上的LED闪烁的时间间隔。 【实验组件】 ● Arduino Uno主板* 1 ● 电位器模块* 1 ● USB电缆*1 ● 面包板* 1 ● 9V方型电池* 1 ● 跳线若干 【实验原理】 模拟电位器是模拟电子元件&#xff0c;模…...

WPF 绘制过顶点的圆滑曲线(样条,贝塞尔)

项目中要用到样条曲线&#xff0c;必须过顶点&#xff0c;圆滑后还不能太走样&#xff0c;捣鼓一番&#xff0c;发现里面颇有玄机&#xff0c;于是把我多方抄来改造的方法发出来&#xff0c;方便新手&#xff1a; 如上图&#xff0c;看代码吧&#xff1a; -------------------…...

YOLOv9-0.1部分代码阅读笔记-assigner.py

assigner.py utils\tal\assigner.py 目录 assigner.py 1.所需的库和模块 2.def select_candidates_in_gts(xy_centers, gt_bboxes, eps1e-9): 3.def select_highest_overlaps(mask_pos, overlaps, n_max_boxes): 4.class TaskAlignedAssigner(nn.Module): 1.所需的库…...

mybatis-plus自动填充时间的配置类实现

mybatis-plus自动填充时间的配置类实现 在实际操作过程中&#xff0c;我们并不希望创建时间、修改时间这些来手动进行&#xff0c;而是希望通过自动化来完成&#xff0c;而mybatis-plus则也提供了自动填充功能来实现这一操作&#xff0c;接下来&#xff0c;就来了解一下mybatis…...