MySQL Status Performance_schema_metadata_lock_lost 数据库状态作用意思及如何正确
本站中文解释
_times_total
MySQL status变量是MySQL服务器状态变量(在mysql_showport中可以看到),它们用来比较和统计服务器的行为,并且可以用于优化MySQL的性能。Performance_schema_metadata_lock_lost_times_total 是MySQL status 变量中的一个,它指的是总的数据元锁丢失的次数。
当SQL语句正在执行的时候,数据元锁就会加上,它保证了在这个sql语句做操作的时候不会影响其他的sql语句的执行,当数据元锁被强制的释放的时候就会算作丢失了一次数据元锁,Performance_schema_metadata_lock_lost_times_total 指的就是这个值。
处理数据元锁丢失的方法很多,可以在mysql中设置一些参数来处理,常用参数有:
(1)innodb_lock_wait_timeout:设置事物在失去数据元锁的时候,阻塞的超时时间,重置为默认值900s。
(2)innodb_spin_wait_delay:设置系统工作线程去等待锁的时候,循环等待的间隔时间,重置为默认值6s。
(3)innodb_sync_spin_loops:设置系统工作线程去轮询锁的次数,重置为默认值180次。
(4)innodb_lock_schedule_algorithm:设置锁定调度算法,可以更好的把握数据元锁的情况,重置为默认值fcfs。
(5)innodb_log_buffer_size:设置日志缓冲区的大小,可以实现日志缓冲优化,重置为默认值8M。
(6)innodb_lru_scan_depth:设置LRU脏页清洗策略,可以更好的处理LRU位图分配,把多余的数据页面置换出去,重置为默认值2048。
(7)innodb_io_capacity:设置io处理性能,用于并行io操作的处理效率,重置为默认值200。
(8)innodb_io_capacity_max:设置io处理最大容量,用于增加系统io实施高级处理效率,重置为默认值2000。
可以根据实际情况,适当调整上述参数,防止数据元锁丢失,提高MySQL数据库的性能。