圆括号里面是对应快捷键
? (\?) Synonym for `help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given
outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing
binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
连接数
如果我只想知道服务器连接有没有打满,那么我并不需要 show processlist ,直接 \s ,status,就知道了
数据库连接线程为 1 个,没有程序或人连数据库,只有我!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!status (\s) Get status information from the server. 快捷键是\s
MySQL 连接的客户端是 5.7.27
MySQL Server 的版本是 5.7.27 社区版
开启了"客户端审计日志",输出到 /tmp/tee.log
我连接数据库用的是 sock 方式
一般来说不能获取连接的数据库端口信息,但这里的命名我甚至获取了端口信息!
我 pager 没有设置,用的默认 stdout,标准输出到屏幕
数据库开机运行时间 1 小时 15 分钟,数据库被重启过了?
数据库连接线程为 1 个,没有程序或人连数据库,只有我!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Questions 数 145 个。
Slow queries为 0,没有慢查询
Opens 数 195,没有快达到 65536 的上限
Open tables 数 188,没有快达到 65536 的上限
Queries per second avg,这个是 QPS,但他的算法是除以 uptime 时间,所以并不能反映现在服务器的负荷,没什么用看字符集
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8
Conn. characterset: utf8
关闭mysql客户端的自动补全功能
https://time.geekbang.org/column/article/79026
mysql -h127.0.0.1 -uxx -pxx db1
reading table information for completion of table and column names
you can turn off this feature to get a quicker startup with -A
一个库里有 6 万个表
--auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子不要用,加了一个表,加了一个库,加了一个字段都重新rehash一次,客户端经常卡死
-A, --no-auto-rehash //默认状态是没有自动补全功能的。-A就是不要自动补全功能
MySQL 客户端会提供一个本地库名和表名补全的功能。为了实现这个功能,客户端在连接成功后,需要多做一些操作:
1.执行 show databases;
2.切到 db1 库,执行 show tables;
3.把这两个命令的结果用于构建一个客户端本地的哈希hash表。
在这些操作中,最花时间的就是第三步在本地构建哈希表的操作。所以,当一个库中的表个数非常多的时候,这一步就会花比较长的时间。
也就是说,我们感知到的连接过程慢,其实并不是连接慢,也不是服务端慢,而是客户端慢。
图中的提示也说了,如果在连接命令中加上 -A,就可以关掉这个自动补全的功能,然后客户端就可以快速返回了。
这里自动补全的效果就是,你在输入库名或者表名的时候,输入前缀,可以使用 Tab 键自动补全表名或者显示提示。
实际使用中,如果你自动补全功能用得并不多,我建议你每次使用的时候都默认加 -A。