数据库Mysql_学习笔记(三)

第三章 Mysql数据库性能

3.1 Mysql数据库的性能监控

3.1.1 mysql连接数

连接数指用户已经创建了多少个连接数,mysql通过执行 SHOW PROCESSLIST 命令输出数据库中运行着的线程个数详情,SHOW PROCESSLIST 默认只显示100条,如果需要显示超过100条记录,需要执行 SHOW FULL PROCESSLIST

数据库支持的最大连接数:SHOW VARIABLES like 'max_connections'

当前已使用的最大连接数:SHOW GLOBAL STATUS like 'Max_used_connections'

3.1.2 mysql数据库当前运行的事务与锁

事务是对数据库执行的一种带有原子性、一致性、隔离性、持久性的数据操作。

在Mysql中如果需要事务,那么数据库存储时必须选用Mysql的innodb引擎,使用Innodb引擎后,在mysql系统数据库中information_schmea的innodb_trx表中记录了数据库正在运行的事务。

字段

 说明

trx_id  事务ID
trx_state  事务的状态 :Running,Lock Wait,Rolling Back 和 Commiting等
trx_started  事务开始运行时间
trx_requested_lock_id

 事务需要等待的、但是已经被别的程序锁定的资源id,一般可以和innodb_locks表关联在一起,获取更多的被锁定的资源的详细信息

trx_wait_started  事务开始等待时间
trx_weight  事务的权重
trx_mysql_thread_id  事务对应的mysql线程id
trx_query  事务正在执行的sql语句
trx_operation_state  事务操作的状态
trx_tables_in_use

 事务使用到的数据库表的数量

扫描二维码关注公众号,回复: 12539769 查看本文章
trx_tables_locked  事务锁定的数据库表的数量
trx_lock_structs  
trx_lock_memory_bytes 事务锁住的内存大小
trx_rows_locked 事务锁定的数据记录行数
trx_rows_modified 事务更改的数据记录行数
trx_concurrency_tickets  事务并发票数
trx_isolation_level  事务的隔离级别:一般分为Read Uncommited(未提交读取),Read Commited (已提交读取) ,Repeated Read(可重复读取),Serializable(序列化)四种不同级别
trx_unique_checks  事务是否打开唯一性检查标识
trx_foreign_key_checks  事务是否打开外键检查标识
trx_last_foreign_key_error  事务最后一次外键检查的错误 
trx_adaptive_hash_latched  
trx_adaptive_hash_timeout  
trx_is_read_only  
trx_autocommit_non_locking  

Mysql系统数据库information_schmea的innodb_locks表中记录innodb数据库引擎当前产生的锁的情况。

Mysql 8.0 锁的观测  https://blog.csdn.net/n88Lpo/article/details/108211411

字段  说明
lock_id  锁的ID
lock_trx_id  拥有锁的事务ID,可以与Innodb_trx链表查询,获取事务详细信息
lock_mode

锁的模式:

行级锁:包括S(共享锁),X(排他锁),IS(意向共享锁),IX (意向排他锁)

表级锁:包括S_GAP(共享间隙锁),X_GAP(排他间隙锁),IS_GAP(意向共享间隙锁),IX_GAP(意向排他间隙锁),AUTO_INC(自动递增锁)

页级锁 :介于行级锁和表级锁之间的一种锁

lock_type  锁的类型,包括RECORD(行级锁),TABLE(表级锁),PAGE(页级锁),innodb引擎中主要采用行级锁;
lock_table  当前被锁定的或者包含锁定记录的表的名称
lock_index 当lock_type为RECORD时,表示锁定的索引的名称,否则直接返回NULL
lock_space 当lock_type为RECORD时,表示锁定的表空间ID,否则直接返回NULL
lock_page 当lock_type为RECORD时,表示锁定的记录行的页数,否则直接返回NULL
lock_rec 当lock_type为RECORD时,表示锁定的数据行的数量
lock_data 当lock_type为RECORD时,表示锁定的记录行的主键

Mysql系统数据库information_schmea的innodb_lock_waits表中记录innodb数据库引擎当前运行的数据库事务等待锁的情况。 

字段  说明
requesting_trx_id  请求事务的id
requested_lock_id  事务所等待的锁的id,可以和innodb_locks表关联查询
blocking_trx_id  阻塞事务的ID
blocking_lock_id  阻塞了另一事务的、正在运行的事务的锁的ID

数据库中出现死锁时,经常需要通过查询innodb_trx,innodb_locks和innodb_lock_waits来找出在执行什么事务操作时导致了死锁,例如执行如下SQL语句可以列出数据中所有事务的等待和锁定记录

--这里有sql语句

3.1.3 Mysql数据库表的监控

猜你喜欢

转载自blog.csdn.net/LoveG_G/article/details/113113084