大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
有时候我们会不小心对一个大表进行了 update,比如说写错了 where 条件......
长春网站建设公司成都创新互联,长春网站设计制作,有大型网站制作公司丰富经验。已为长春成百上千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的长春做网站的公司定做!
此时,如果 kill 掉 update 线程,那回滚 undo log 需要不少时间。如果放置不管,也不知道 update 会持续多久。
那我们能知道 update 的进度么?
实验
我们先创建一个测试数据库:
快速创建一些数据:
连续执行同样的 SQL 数次,就可以快速构造千万级别的数据:
查看一下总的行数:
我们来释放一个大的 update:
然后另起一个 session,观察 performance_schema 中的信息:
可以看到,performance_schema 会列出当前 SQL 从引擎获取的行数。
等 SQL 结束后,我们看一下 update 从引擎总共获取了多少行:
可以看到该 update 从引擎总共获取的行数是表大小的两倍,那我们可以估算:update 的进度 = (rows_examined) / (2 * 表行数)
????小贴士
information_schema.tables 中,提供了对表行数的估算,比起使用 select count(1) 的成本低很多,几乎可以忽略不计。
那么是不是所有的 update,从引擎中获取的行数都会是表大小的两倍呢?这个还是要分情况讨论的,上面的 SQL 更新了主键,如果只更新内容而不更新主键呢?我们来试验一下:
等待 update 结束,查看 row_examined,发现其刚好是表大小:
那我们怎么准确的这个倍数呢?
一种方法是靠经验:update 语句的 where 中会扫描多少行,是否修改主键,是否修改唯一键,以这些条件来估算系数。
另一种方法就是在同样结构的较小的表上试验一下,获取倍数。
这样,我们就能准确估算一个“不小心”执行的大型 update 的进度了。
一、用phpMyAdmin进行查看
二、用命令行的SHOW 语句
直接在命令行下登陆MySQL运行SHOW STATUS;查询语句
同样的语句还有SHOW VARIABLES;,SHOW STATUS是查看MySQL运行情况,和上面那种通过pma查看到的信息基本类似。
SHOW VARIABLES
SHOW VARIABLES是查看MySQL的配置参数,还可以使用类似SHOW VARIABLES LIKE ‘Key%’
SHOW PROCESSLIST
SHOW PROCESSLIST是查看当前正在进行的进程,对于有锁表等情况的排查很有用处。一般情况下,打开MySQL的慢查询记录同样有利于排查。
SHOW OPEN TABLES
SHOW OPEN TABLES是显示当前已经被打开的表列表。
三、用MySQL自带工具mysqladmin 查看
使用MySQL自带的mysqladmin 工具查看status,使用以下命令
mysqladmin -uroot -p密码 status
显示的结果如下:
Uptime: 502963 Threads: 2 Questions: 8561820 Slow queries: 734681 Opens: 553
45 Flush tables: 1 Open tables: 85 Queries per second avg: 17.023
另外可以添加 -i 5 参数,让其每五秒自动刷新之。
mysqladmin -uroot -p密码 status -i 5
mysqladmin extended-status
同样的可以使用mysqladmin -uroot -p密码 extended-status来查看更多的MySQL运行信息,这种方式和第一种查看的信息基本一样。
方法如下:
1、mysql中查看服务是否启动的有关命令和参数的意思。
2、在dos窗口运行命令,结果如图。
3、mysql服务停止后。
4、dos命令执行情况。
延展回答:
mysqladmin 是mysql查看服务器的命令 。
-u 是连接数据库的用户名 。
-h 是远程服务器的ip地址 。
-p 是登陆mysql的密码(注意p是小写的) 。
-P 是mysql的端口号(这里的p是大写的)。
ping 本人理解就是ping mysql服务是否开启。
MySQL中使用show status语句查询MySQL的性能参数
语法:
show status like [statement];
常用statement说明:
# 查询连接MySQL服务器的次数
# 查询MySQL服务器上线的时间
# 查询慢查询的次数
# 查询 查询操作的次数
查看MySQL服务器配置信息 :
查看MySQL服务器运行的各种状态值 :
慢查询:
连接数:
key_buffer_size 是对MyISAM表性能影响最大的一个参数
临时表:
查看open table :
进程使用情况:
查询缓存(query cache) :
文件打开数(open_files) :
表锁情况 :
表扫描情况 :
查询吞吐量:
连接情况:
分析查询语句
mysql提供了explain语句和describe语句,进行分析查询语句
EXPLAIN的语法:
说明:
示例:
DESCRIBE语句
使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。
语法:
mysql中提高性能的最有效的方式:
1, 对数据表设计合理的索引。索引提供了高效访问数据的方法,并且加快了查询的速度。
使用索引查询几种特殊情况:
1、首先Win+R组合键,输入cmd。
2、接着输入mysql用户名密码进入命令行状态。
3、然后show databases展示所有数据库。
4、接着use选择要操作的数据库。
5、然后show status查看状态。
6、最后列出了数据库所有的属性,说明数据库已开启。
利用mysql命令查看
MySQL
内建直接看
status
就可以看到系统常见讯息,
如下述范例:
1.$
mysql
-u
root
-p
2.mysql
s
“Threads:
2
Questions:
224857636
Slow
queries:
229
Opens:
1740
Flush
tables:
1
Open
tables:
735
Queries
per
second
avg:
137.566
$
mysql
-u
root
-p
-e
"status"
#
s
=
status,
用这个也会列出上述结果.