MySQL中发生死锁如何解决


自动检测与回滚MySQL自带死锁检测机制(innodb_deadlock_detect),当检测到死锁的时候,数据库会自动回滚其中一个事务,以接触死锁,通常会回滚事务中持有最少资源的那个。也有锁等待超时的参数(innodb_lock_wait_timeout),当锁等待超过这个时间后,MySQL会自

MySQL索引类型


按数据结构分B+树索引哈希索引倒排索引(Full-text 索引)R-树索引 (多维树空间)从InnoDB b+树索引来看,分为聚簇索引和非聚簇索引聚簇索引也就是主键索引,叶子节点存储整行的数据,非叶子节点存储主键值和指向子节点的指针。非聚簇索引叶子节点存储主键,非叶子节点存储主键值和指向子节点的指

监控MySQL状态的一些SQL


监控MySQL状态的一些SQL-- 查询未使用索引SELECT * FROM sys.schema_unused_indexes;-- 查询表的访问量SELECT table_schema,TABLE_NAME,SUM(io_read_requests + io_write_requests) AS

MySQL性能分析命令-MySQL Profiling


MySQL性能分析命令show profile什么是MySQL Profiling?MySQL Profiling是MySQL数据库提供的一套性能分析工具,可以帮助开发者和DBA了解SQL语句的执行细节,包括执行时间、资源消耗等信息,从而优化查询性能。SET PROFILING命令SET PROFI

mysqldumpslow分析慢查询日志


什么是 mysqldumpslow?mysqldumpslow 是 MySQL 自带的一个强大的命令行工具,用于分析慢查询日志。它帮助数据库管理员和开发人员通过解析和汇总慢查询日志文件,以可读的格式识别性能瓶颈。基本语法mysqldumpslow [选项] [日志文件...]常用选项详解基本过滤选项

缓存与数据库一致性问题探究


缓存与数据库一致性缓存和数据库一致性是说在使用缓存的情况下,保证缓存中的数据和数据库中数据一致的问题。“先写缓存再写数据库”、“先写数据库再写缓存”、“先删除缓存再写数据库”这三种策略确实存在较大的数据不一致风险,因此通常不建议直接使用,特别是在高并发、分布式系统中。问题先写缓存再写数据库策略:先写

MYSQL数据排序


MYSQL数据排序https://www.mianshiya.com/question/1780933295526146049排序过程中,如果排序字段命中索引,就采用索引排序,反之采用文件排序。文件排序中,如果数据量少就在内存中排序,数据量大就利用磁盘文件进行外部排序。filesort当使用expl

MySQL 意向锁


IS锁(意向共享锁,Intention Shared Lock):定义:IS锁是一种表级锁,它表明一个事务打算在表中的某些行上获取共享锁(S锁)。共享锁允许事务对数据进行读取操作,并且允许多个事务同时持有同一数据行的共享锁,因为读取操作通常不会修改数据,所以可以并发执行。用途:当事务执行诸如 SEL

MYSQL索引失效情况


MySQL 索引失效的常见场景可以分为以下几类,结合具体示例更容易理解:1. 违反最左前缀原则(Leftmost Prefix Rule)适用场景:联合索引(复合索引)。失效原因:未从索引的最左列开始查询,或未连续使用索引列。示例:-- 假设索引为 (a, b, c)SELECT * FROM ta

MySQL索引与排序


CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT NOT NULL, email VARCHAR(100) NOT NULL);INSERT I