<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
网站运行很慢的时候,我就特别起知道为什么这么慢,所以我查啊查,数据库绝对是很重要的一部分,里面运行的sql是绝对不能放过的。平时做项目的时候,我也会注意sql语句的书写,写出一些高效的sql来,所以我会经常测试自己写的sql语句。我把我知道的二个方法,总结一下发出来。
一,show profiles 之类的语句来查看
1,查一下profile是不是打开了,默认是不打开的。
mysql> show profiles; Empty set (0.02 sec) mysql> show variables like "%pro%"; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | profiling | OFF | | profiling_history_size | 15 | | protocol_version | 10 | | slave_compressed_protocol | OFF | +---------------------------+-------+ 4 rows in set (0.00 sec)
我查看一下profiles里面没有东西,所以公司的电脑里面profile是没有打开的,我查看了一下mysql变量,果然是OFF的。
2,开启profile,然后测试
开启profile
mysql> set profiling=1; Query OK, 0 rows affected (0.00 sec)
测试如下:
mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | aa | | bb | | comment | | string_test | | user | +----------------+ 5 rows in set (0.00 sec) mysql> select * from aa; +----+------+------------+------+ | id | name | nname | sex | +----+------+------------+------+ | 2 | tank | bbbb,4bbbb | NULL | | 3 | zhang| 3,c,u | NULL | +----+------+------------+------+ 2 rows in set (0.00 sec) mysql> update aa set name='d'; Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> delete from bb; Query OK, 2 rows affected (0.00 sec) mysql> show profiles; +----------+------------+------------------------+ | Query_ID | Duration | Query | +----------+------------+------------------------+ | 1 | 0.00054775 | show tables | | 2 | 0.00022400 | select * from aa | | 3 | 0.00026275 | update aa set name='d' | | 4 | 0.00043000 | delete from bb | +----------+------------+------------------------+ 4 rows in set (0.00 sec) mysql> show profile; +----------------------+-----------+ | Status | Duration | +----------------------+-----------+ | (initialization) | 0.0000247 | | checking permissions | 0.0000077 | | Opening tables | 0.0000099 | | System lock | 0.000004 | | Table lock | 0.000005 | | init | 0.0003057 | | query end | 0.0000062 | | freeing items | 0.000057 | | closing tables | 0.000008 | | logging slow query | 0.0000015 | +----------------------+-----------+ 10 rows in set (0.00 sec) mysql> show profile for query 1; +----------------------+-----------+ | Status | Duration | +----------------------+-----------+ | (initialization) | 0.000028 | | checking permissions | 0.000007 | | Opening tables | 0.0000939 | | System lock | 0.0000017 | | Table lock | 0.0000055 | | init | 0.000009 | | optimizing | 0.0000027 | | statistics | 0.0000085 | | preparing | 0.0000065 | | executing | 0.000004 | | checking permissions | 0.000258 | | Sending data | 0.000049 | | end | 0.0000037 | | query end | 0.0000027 | | freeing items | 0.0000307 | | closing tables | 0.0000032 | | removing tmp table | 0.0000275 | | closing tables | 0.0000037 | | logging slow query | 0.000002 | +----------------------+-----------+ 19 rows in set (0.00 sec) mysql> show profile for query 3; +----------------------+-----------+ | Status | Duration | +----------------------+-----------+ | (initialization) | 0.0000475 | | checking permissions | 0.0000077 | | Opening tables | 0.000026 | | System lock | 0.0000042 | | Table lock | 0.0000045 | | init | 0.0000205 | | Updating | 0.0000787 | | end | 0.0000567 | | query end | 0.000004 | | freeing items | 0.0000067 | | closing tables | 0.000004 | | logging slow query | 0.000002 | +----------------------+-----------+ 12 rows in set (0.00 sec)
二,timestampdiff来查看测试时间
mysql> set @d=now(); Query OK, 0 rows affected (0.00 sec) mysql> select * from comment; +------+-----+------+------------+---------------------+ | c_id | mid | name | content | datetime | +------+-----+------+------------+---------------------+ | 1 | 1 | ?? | 2222222211 | 2010-05-12 00:00:00 | | 2 | 1 | ?? | ????(??) | 2010-05-13 00:00:00 | | 3 | 2 | tank | ?????? | 0000-00-00 00:00:00 | +------+-----+------+------------+---------------------+ 3 rows in set (0.00 sec) mysql> select timestampdiff(second,@d,now()); +--------------------------------+ | timestampdiff(second,@d,now()) | +--------------------------------+ | 0 | +--------------------------------+ 1 row in set (0.00 sec)
这种方法有一点要注意,就是三条sql语句要尽量连一起执行,不然误差太大,根本不准
set @d=now(); select * from comment; select timestampdiff(second,@d,now());
如果是用命令行来执行的话,有一点要注意,就是在select timestampdiff(second,@d,now());后面,一定要多copy一个空行,不然最后一个sql要你自己按回车执行,这样就不准了。
其实我觉得吧,真正要我们关心的是,那些查询慢的sql,因为真正影响速度的是他们,关于慢查询的东西,有空写一下。
相关推荐
该语句可以查看 MySQL 服务器自上次启动以来的运行时间,以秒为单位。 2. 查看 select 语句的执行数 使用语句:show status like 'com_select'; 该语句可以查看 MySQL 服务器自上次启动以来的 select 语句执行...
在这个过程中,`MysqlToPostgresUtil`工具扮演着重要的角色,它能帮助我们将MySQL的DDL(Data Definition Language)语句转换为PostgreSQL兼容的格式,从而简化迁移过程。 MySQL和PostgreSQL虽然都是关系型数据库...
标题中的“Excel生成MYSQL建表语句”是指利用JAVA编程技术,通过读取预先设计好的Excel模板,自动生成对应的MySQL数据库建表语句的过程。这个过程通常涉及到数据处理、文件读写以及数据库操作等核心技能。 首先,让...
2. MySQL数据库简介:MySQL是一个开放源代码的关系型数据库管理系统,广泛应用于Web应用中。它使用结构化查询语言(SQL)进行数据库管理。 3. SQL语句优化的重要性:在数据库操作中,SQL语句的效率直接影响到应用的...
本篇文章旨在为初学者提供一份简明扼要的MySQL语句指南,涵盖了数据库管理和操作的基本方面。以下将详细介绍文件中提到的一些关键知识点。 #### 1. 检查MySQL服务状态 ```bash sudo service mysqld status ``` 这...
MySQL到Oracle的数据迁移是一项常见的任务,特别是在企业级应用中,可能因为各种原因需要从MySQL迁移到功能更强大的Oracle数据库系统。下面将详细讲解这个过程涉及的关键知识点。 首先,我们需要了解MySQL和Oracle...
总的来说,MySQL C API预处理语句提供了一种高效且安全的方法来与MySQL数据库交互,通过预编译的SQL语句,可以避免SQL注入,同时提升代码的可读性和可维护性。正确配置开发环境,理解和使用预处理语句是进行MySQL C ...
《Effective MySQL之SQL语句最优化》是一本深入探讨如何提升数据库性能的专业手册,它针对SQL语句的优化提供了一系列实用且高效的策略。在数据库管理领域,SQL优化是提升系统性能的关键环节,尤其是在处理大数据量时...
当你在MySQL客户端输入`status`并执行时,它会显示一些关键信息,例如MySQL的版本、连接ID、当前数据库、用户、字符集、服务器运行时间、线程数量、已执行的查询总数以及慢查询的数量等。例如: ``` mysql> status;...
Python-MysqlMonitor是一款专为MySQL数据库设计的监控工具,它可以帮助用户实时跟踪和分析MySQL服务器上执行的SQL语句,从而优化数据库性能、定位问题和提升运维效率。这款工具主要面向数据库管理员和开发人员,通过...
MySQL是一种广泛使用的开源关系型数据库管理系统,由瑞典的MySQL AB公司开发,后来被Sun Microsystems公司收购,Sun公司又被甲骨文公司(Oracle Corporation)收购。MySQL使用结构化查询语言(SQL)进行数据库管理,...
例如,通过查看长时间运行的SQL语句,可以针对性地进行代码优化或调整索引策略;通过分析I/O性能,可以判断是否需要升级硬件或调整存储配置。此外,它还能辅助排查故障,如发现异常的会话或资源消耗,及时采取措施...
mysqlCPU高语句实时监控 #适用于实时查询mysql占用CPU高的语句,循环监控mysql进程情况,当CPU大于一定的前执行中的SQL情况. #执行前,修改ENV认证部分 #编写:Chaoren #2022年3月4日18:38:53 # #对于执行时间非常短...
定期检查慢查询日志,找出运行时间过长的SQL语句进行优化。使用性能监控工具,如MySQL的Performance Schema,可以提供关于查询执行的详细信息,帮助定位性能瓶颈。 最后,了解并掌握分区和分片策略。对于大规模数据...
例如,如果你发现某个查询运行时间过长,可以通过`SHOW FULL PROCESSLIST;`来获取更详细的进程信息,帮助你进行优化。 在实际应用中,你还可以结合shell脚本、cron定时任务等工具,实现定时执行SQL任务,无需手动...