
mysql
文章平均质量分 71
杏花春雨江南
这个作者很懒,什么都没留下…
展开
-
意向锁的目的
支持表级锁和行级锁的共存。它是一种表级锁,但不会阻塞其他事务对表中其他行的操作。意向锁通过“预告”事务的加锁意图,使得数据库可以快速判断锁冲突,从而提升并发性能。原创 2025-03-06 21:35:44 · 320 阅读 · 0 评论 -
SELECT ... FOR UPDATE 加锁后,其他线程能读取数据吗
读取未提交数据:仅在级别下允许。读取已提交数据:在和级别下允许,但可能限制更多。因此,加锁后,其他事务能否读取数据取决于数据库的隔离级别。原创 2025-03-06 21:20:00 · 240 阅读 · 0 评论 -
在线DDL
MySQL 5.6 及以上版本支持多种在线 DDL 操作,包括添加列、删除列、修改列类型、添加索引、删除索引、重命名表、设置默认值和删除默认值等。在线 DDL 提高了数据库的可用性和性能,但在执行时仍需注意锁机制、资源消耗和版本差异等问题。功能,允许在不锁定表或最小化锁定的情况下执行某些 DDL 操作。这大大提高了数据库的可用性和性能。从 MySQL 5.6 开始,引入了。原创 2025-03-06 15:54:54 · 346 阅读 · 0 评论 -
DDL语句是加锁
DDL 语句通常会对表加。原创 2025-03-06 11:30:30 · 915 阅读 · 0 评论 -
SQL分几种
SQL(Structured Query Language)是用于管理关系型数据库的标准语言。掌握这些 SQL 语句类型,可以更好地管理和操作关系型数据库。用于定义或修改数据库结构(如表、索引、视图等)。用于对数据库中的数据进行增、删、改操作。用于从数据库中查询数据。用于控制数据库访问权限。用于管理数据库事务。原创 2025-03-06 11:29:05 · 571 阅读 · 0 评论 -
MySQL 中,SELECT ... FOR UPDATE
主要用于防止其他事务修改或删除被锁定的行,但通常不会阻止其他事务读取快照数据。的行,但读取的是事务 A 加锁之前的快照数据。假设有两个事务:事务 A 和事务 B。隔离级别下,事务 B 可以读取。语句会对查询结果集中的行加。在 MySQL 中,原创 2025-03-06 11:22:46 · 251 阅读 · 0 评论 -
SELECT/DELETE/ UPDATE/ INSERT 语句会自动加锁
在 MySQL 中,SELECTDELETEUPDATE和INSERT语句是否会加锁,以及加什么锁,取决于和。原创 2025-03-06 11:13:05 · 898 阅读 · 0 评论 -
DELETE/ UPDATE/ INSERT 语句会自动加锁
在数据库系统中,DELETEUPDATE和INSERT语句通常会自动加锁,以确保数据的一致性和并发控制。具体的锁类型和效果取决于数据库的实现(如 MySQL、PostgreSQL 等)以及事务的隔离级别。原创 2025-03-06 10:52:23 · 443 阅读 · 0 评论 -
删除变慢问题
随着数据逐步删除,剩余的数据量减少,但数据库仍然需要扫描整个表(或索引)来找到符合条件的记录,尤其是在数据分布不均匀的情况下,查询效率会显著下降。删除操作不仅会删除数据,还会更新索引、写入事务日志(如MySQL的undo log和redo log),并可能触发锁机制(如行锁或表锁)。频繁的删除操作会导致数据页(Data Page)出现碎片化,数据库在查询时需要扫描更多的数据页来找到符合条件的记录,从而降低查询效率。这种方法可以减少对主表的操作压力。:使用的索引,如果没有使用索引,可能需要优化索引设计。原创 2025-02-28 17:33:28 · 748 阅读 · 0 评论 -
mysql 双1设置
和。这两个参数都与 MySQL 的数据安全和性能有关。:这个参数控制了 InnoDB 引擎中事务日志的刷新频率。"双1"设置中,这个参数通常被设置为 1,以确保数据的安全性。:这个参数控制了 MySQL 的二进制日志的同步写入频率。"双1"设置中,这个参数也通常被设置为 1,以确保数据的安全性。总的来说,"双1"设置是为了在保证数据安全的前提下,尽可能地提高 MySQL 的性能。这种设置可以防止在崩溃或电源故障时丢失已提交的事务数据,但也可能会对性能产生一定的影响。原创 2024-12-05 21:31:18 · 972 阅读 · 0 评论 -
一个死锁日志
RECORD LOCKS space id 1588 page no 58 n bits 696 index idx_pinof tabledbName_info.user_extend trx id 7641DF368 lock_mode X waiting:说明事务2正在等待一个排他锁(lock_mode X),以便对表user_extend的非主键索引idx_pin进行操作。mysql tables in use 1, locked 1:说明事务1正在使用1张表,并且已经锁定了1张表。原创 2024-11-25 16:52:22 · 917 阅读 · 0 评论 -
mysql出现主备延迟之后,怎么处理
MySQL 的主备延迟通常指的是主库(Master)与备库(Slave)之间的数据同步延迟。出现这种情况可能会导致备库的数据落后于主库,从而影响数据的可用性和一致性。原创 2024-11-18 16:26:05 · 503 阅读 · 0 评论 -
WAL机制
当一个事务提交时,InnoDB 会立即将相应的日志条目写入 redo log buffer,并标记该事务为已准备就绪。如果此时发生故障,重启后 InnoDB 将检查 redo log files 并重新执行任何尚未完成的操作,以确保数据的一致性。在这种机制下,所有修改数据库的操作都会先记录到日志文件中,然后再应用到实际的数据库文件。:一旦 redo log buffer 被填满,或者达到一定的时间间隔,内容就会被刷新到磁盘上的 redo 日志文件中。原创 2024-11-18 15:51:34 · 350 阅读 · 0 评论 -
count(字段)<count(主键id)<count(1)≈count(*)
则是用来统计指定字段的非 NULL 值的数量。如果这个字段允许 NULL 值,那么它的计数结果可能小于。是最推荐的计数方式,除非你有特定的需求需要统计某个字段的非 NULL 值数量。也会统计主键列的非 NULL 值的数量。由于主键不能为 NULL,理论上。是最通用的计数函数,它会统计表中的所有行数,包括 NULL 值。,但实际上可能因为索引和优化器的原因而有所不同。在大多数情况下是等效的。原创 2024-11-15 11:30:21 · 246 阅读 · 0 评论 -
mysql 锁
对于MyISAM这种不支持事务的引擎,如果备份过程中有更新,总是只能取到最新的数据,那么就破坏了备份的一致性。这时,我们就需要使用 Flush tables with read lock (FTWRL)命令官方自带的逻辑备份工具是mysqldump。当mysqldump使用参数–single-transaction的时候,导数据之前就会启动一个事务,来确保拿到一致性视图。而由于MVCC的支持,这个过程中数据是可以正常更新的。?原创 2024-11-07 11:21:04 · 995 阅读 · 0 评论 -
Online DDL (Data Definition Language)
是MySQL中的一个功能,允许在修改表结构(如添加、删除或修改列)的同时,允许对表进行并发读写操作。在传统的DDL操作中,对表结构的修改会导致整个表被锁定,从而阻止其他事务对该表进行读写操作,这可能导致长时间的锁定和性能问题。Online DDL的引入解决了这个问题,它允许在修改表结构的同时,保持对表的并发访问。MySQL从5.6版本开始引入了Online DDL的部分功能,而在8.0版本中对Online DDL进行了进一步的优化。原创 2024-09-23 14:16:45 · 354 阅读 · 0 评论 -
MDL锁相关
MDL锁(metadata lock,元数据锁)属于表级别的锁,分为数据锁和元数据锁。通常我们说的加锁一般指的是加的数据锁。跟数据锁一样,元数据锁也分读锁和写锁。MDL锁不需要显示使用,会在进行表操作时自动加上。当对表数据进行增删改查(如insert、delete、select、update等)时,会自动加上MDL读锁。当要对表进行加减字段的结构修改时,会自动加上MDL写锁。读锁之间不互斥,意味着可以多个线程同时对一张表进行增删改查(CRUD)的操作。原创 2024-09-23 14:12:06 · 892 阅读 · 0 评论 -
mysql update语句会加什么锁
在 MySQL 中,UPDATE语句会根据不同的存储引擎和隔离级别,自动获取不同的锁。原创 2024-09-18 11:15:58 · 1100 阅读 · 0 评论