-
MySQL优化之show processlist命令详解
SHOW PROCESSLIST 显示哪些线程正在运行 不在mysql提示符下使用时用mysql -uroot -e 'show processlist' 或者mysqladmin processlist 如果您有root权限,您可以看到所有线程。否则,您只能看到登录的用户自己的线程,通常只会显示100条如果想看跟多的可以使用full修饰(show full processlist) 参数 id #ID标识,要kill一个语句的时候很有用 use #当前连接用户 host #显示这个连接从哪个ip的哪个端口上发出 db #数据库名 command #连接状态,一般是休眠(sleep),查询(query),连接(connect) time #连接持续时间,单位是秒 state #显示当前sql语句的状态 info #显示这个sql语句 其中state的状态十分关键,下表列出state主要状态和描述: 状态 描述 Checking table 正在检查数据表(这是自动的)。 Closing tables 正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。 Connect Out 复制从服务器正在连接主服务器。 Copying to tmp table on disk 由于临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。 Creating tmp table 正在创建临时表以存放部分查询结果。 deleting from main table 服务器正在执行多表删除中的第一部分,刚删除第一个表。 deleting from reference tables 服务器正在执行多表删除中的第二部分,正在删除其他表的记录。 Flushing tables 正在执行FLUSH TABLES,等待其他线程关闭数据表。 Killed 发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL……
SE_Zhang 2024-04-1613 0 0 -
mysql优化——定位慢查询
1、show status 命令 命令使用方式:show [session|global] status like 'slow_queries' 如果你不写 [session|global] 默认是session 会话,指取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该 global) 执行show status 显示的数据库变量大概有291个。变量对应说明: http://www.ttlsa.com/mysql/mysql_show_status_descriptsions/ http://blog.chinaunix.net/uid-20204919-id-1972099.html http://lxneng.iteye.com/blog/451985 show status 常用的命令: show status like ‘uptime’ ; show stauts like ‘com_select’ show stauts like ‘com_insert’ ...类推 update delete show status like ‘connections’; //显示慢查询次数 show status like ‘slow_queries’; 2、mysql默认的慢查询 默认情况下,mysql认为10秒才是一个慢查询. show variables like ‘long_query_time’ ; //可以显示当前慢查询时间 set long_query_time=1 ;//可以修改慢查询时间 3、定位慢查询 show variables like '%slow%'; #查看MySQL慢查询是否开启 set global slow_query_log=ON; #开启MySQL慢查询功能 show variables like "long_query_time"; #查看MySQL慢查询时间设置,默认10秒 set global long_query_time=5; #修改为记录5秒内的查询 select sleep(6); #测试MySQL慢查询 show variables like "%slow%"; #查看MySQL慢查询日志路径 show global status like '%slow%'; #查看MySQL慢查询状态 或者 vi /etc/my.cnf #编辑,在[mysqld]段添加以下代码 slow-query-log = on #开启MySQL慢查询功能 slow_query_log_file = /var/run/mysqld/mysqld-slow.log #设置MySQL慢查询日志路径 long_query_time = 5 #修改为记录5秒内的查询,……
SE_You 2024-04-0710 0 0 -
MySQL8.0对比MySQL5.7的性能提升及优化
工作中,经常用到Mysql,但是同事们因为对MySQL5.7比较熟悉,往往都是拿MySQL8.0直接当作MySQL5.7使用,其实这个就有点资源浪费了,我们应该好好了解MySQL8.0一些性能提升的地方。特总结如下: 一、MySQL 8.0相比MySQL 5.7,有多方面的改进,以下是其中一些方面的比较: 1.1 JSON处理 MySQL 8.0相比MySQL 5.7,对JSON数据类型的支持更加完善。MySQL 8.0可以直接在JSON数据中进行搜索、排序和过滤,并且支持JSON表达式索引,大大提高了处理JSON数据的效率和性能。 1.2 更好的性能和可扩展性 MySQL 8.0相比MySQL 5.7,在性能和可扩展性方面都有很大的提升。MySQL 8.0引入了新的多线程架构,可以更好地利用多核处理器,同时也提高了并发读写的能力。此外,MySQL 8.0还支持更多的存储引擎,包括InnoDB、MyISAM、Memory、CSV、Blackhole、Archive等等。 1.3 更丰富的数据类型 MySQL 8.0相比MySQL 5.7,支持更丰富的数据类型,包括YEAR(4)、GEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION等等。这些数据类型的支持可以更好地满足不同应用场景的需求。 1.4 更好的安全性 MySQL 8.0相比MySQL 5.7,在安全性方面也有很大的提升。MySQL 8.0引入了新的密码验证插件,使用更加安全的加密算法,提高了密码的安全性。此外,MySQL 8.0还支持更多的安全特性,包括增强的SSL/TLS支持、更加严格的密码策略、更加灵活的用户管理等等。 1.5 小结 MySQL 8.0相比MySQL 5.7在多方面都有很大的改进,包括JSON处理、性能和可扩展性、数据类型、安全性等等。MySQL 8.0的改进使其更加适合处理大规模的数据和高并发的请求,同时也提高了数据的处理效率和安全性。 二、MySQL 8.0相比MySQL 5.7,在配置方面有一些不同之处。下面列出了一……
SE_Gao 2024-02-2089 0 0