性能监控
发现sql运行慢的时候,得知道具体哪里执行时间长。那得进行性能监控
show profile查询剖析工具,可以哪个步骤执行时间较长
![67a43d05af6dddcc088cafd630f91e24.png](https://img-blog.csdnimg.cn/img_convert/67a43d05af6dddcc088cafd630f91e24.png)
可以看到select 的这条语句实际的执行时间是 0.00013475
然后 show profile; 可以查看具体的运行时间。
![eaf3ede4f140cf004f2af566a734c303.png](https://img-blog.csdnimg.cn/img_convert/eaf3ede4f140cf004f2af566a734c303.png)
这个SHOW PROFILE
和SHOW PROFILES
语句显示指示在当前会话期间执行的语句的资源使用情况的分析信息。
话不多说,先来连接linux上的mysql。 这里sql主机地址就填虚拟机的ip地址。root是mysql的用户名,密码就填mysql的密码。然后测试连接,然后连接。我从我windows上的5.5版本的mysql中导出了一个数据库,然后导入到这个5.7版本中,懒得建表弄数据了。
![053f962984efb16a60d8cae43ecbe6f9.png](https://img-blog.csdnimg.cn/img_convert/053f962984efb16a60d8cae43ecbe6f9.png)
![eb2bd3d9af5117cd7f671537f7ae28b1.png](https://img-blog.csdnimg.cn/img_convert/eb2bd3d9af5117cd7f671537f7ae28b1.png)
只是用这个图形化界面导个数据。
![5d0c71013dcee595e5bd8d16266b961a.png](https://img-blog.csdnimg.cn/img_convert/5d0c71013dcee595e5bd8d16266b961a.png)
然后set profiling=1;
然后依次执行这几个表的select *
然后可以使用show profiles; 看执行过的这些sql都用了多长时间。
![f908dca5e2f5a0dd8effb12e5118d4d4.png](https://img-blog.csdnimg.cn/img_convert/f908dca5e2f5a0dd8effb12e5118d4d4.png)
可以选择id来看具体哪条sql使用的时间,show profile for query 2; 这个2代表上图的query_id
![b5a0391f99a6df94fa39bc509ae05726.png](https://img-blog.csdnimg.cn/img_convert/b5a0391f99a6df94fa39bc509ae05726.png)
具体还有很多命令,MySQL官网如下
13.7.7.30 SHOW PROFILE Statementdev.mysql.com![e4abe5a4f5b0e33a28cd2a1720eff127.png](https://img-blog.csdnimg.cn/img_convert/e4abe5a4f5b0e33a28cd2a1720eff127.png)
![cb54681fabbf2add08b9594b30a4fba2.png](https://img-blog.csdnimg.cn/img_convert/cb54681fabbf2add08b9594b30a4fba2.png)
Use the Performance Schema instead 使用Performance Schema 代替
这个东西熟悉么?这不就是么? 另外Performance Schema也是一中存储引擎和Memory一样,不支持持久化的,而innodb和myisam都支持持久化。
![6dbaed7c8eff5bcae52d00746ea0bea9.png](https://img-blog.csdnimg.cn/img_convert/6dbaed7c8eff5bcae52d00746ea0bea9.png)
怎么使用呢? 默认是开启的。
![f84fc7b8b5b476d8567ff4dffecc34e2.png](https://img-blog.csdnimg.cn/img_convert/f84fc7b8b5b476d8567ff4dffecc34e2.png)
这个有什么用呢? show profile可以监控 cpu sql io block等,而performance schame可以监控的更细致,比如sql没问题,就是慢,就可以用performance schame 看一下哪些线程在做什么事,占用多少时间。performance schame使用非常广,不占用篇幅来细说了。
使用show processlist;查看连接的线程个数,观察是否有大量线程处于不正常的状态或者其他不正常的特征。
![0cf803e14ceff9270312ca6c85c56102.png](https://img-blog.csdnimg.cn/img_convert/0cf803e14ceff9270312ca6c85c56102.png)
时间类型优化:
datetime:
占用8个字节,与时区无关。
数据库底层时区配置,对datetime无效
可保存到毫秒
可保存时间范围大
不要使用字符串存储日期类型,占用空间大,损失日期类型函数的便捷性
timestamp:
占用4个字节
时间范围1970-01-01 - 2038-01-19
精确到秒,采用整形存储,依赖数据库设置的时区,自动更新timestamp列的值
date:
占用字节数比使用字符串,datetime,int存储更少,使用date类型只需要3个字节
使用date类型还可以利用日期时间函数进行日期之间的计算
date类型用于保存1000-01-01到9999-12-31之间的日期。