随笔分类 - mysql
摘要:在 MySQL 中,索引的使用可以大大提升查询性能,但在某些情况下,索引可能会失效,导致 MySQL 无法利用索引,转而进行全表扫描或其他低效操作。以下是索引失效的常见情况: 1. 查询条件导致索引失效 条件中使用了函数: 如果查询条件中的列被函数包裹,MySQL 无法利用索引。 示例: SELEC
阅读全文
摘要:MySQL 索引覆盖(Covering Index) 是一种优化查询性能的技术,指的是查询所需的所有列的数据都能够从索引中获取,不需要再回表查询数据。 1. 索引覆盖的概念 覆盖索引(Covering Index) 是一种索引,它包含了 SQL 查询中涉及的所有列(包括查询列和条件列),不需要额外访
阅读全文
摘要:在现代应用程序中,数据库是数据存储和管理的核心。为了确保数据的一致性和完整性,数据库事务提供了原子性、一致性、隔离性和持久性(ACID)特性。然而,在编写代码时,许多开发者可能会陷入一个常见的误区:在同一个数据库连接(DB 对象)上并发发起多个事务。本文将探讨这个问题的原因、后果及解决方案。 什么是
阅读全文
摘要:在数据库系统中,锁机制是保证数据一致性和完整性的关键。除了行级锁和表级锁外,还有一种锁类型,它在数据库的事务处理中扮演着重要的角色——意向锁(Intention Locks)。在这篇博客中,我们将详细讲解意向共享锁(Intention Shared Lock)和意向排它锁(Intention Exc
阅读全文
摘要:在数据库系统中,排他锁(Exclusive Lock)用于确保在一个事务对数据进行修改时,其他事务无法访问或修改相同的数据。这种机制确保了数据的完整性和一致性。 获取排他锁的方式包括自动获取和手动获取,下面我将详细整理这两种方式的机制。 自动获取排他锁 行级别的排他锁(自动) 场景:当你执行修改操作
阅读全文
摘要:在数据库系统中,锁机制是确保数据一致性、完整性的重要手段。MySQL中的排他锁(Exclusive Lock)是防止数据在修改过程中被其他事务访问或修改的关键工具。排他锁不仅可以作用于单行数据,还可以作用于整个表。当排他锁用于表级别时,它可以阻止其他事务对表的任何操作,从而确保数据的一致性。本文将详
阅读全文
摘要:在数据库管理中,锁机制是确保数据一致性与完整性的关键工具之一。MySQL中的共享锁(Shared Lock)是一种允许多个事务并发读取数据但禁止修改的锁类型。共享锁不仅可以作用于单行数据,还可以作用于整个表。当共享锁用于表级别时,它能有效防止数据在读取期间被修改,从而确保数据的一致性。本文将详细介绍
阅读全文
摘要:在MySQL中,排他锁(Exclusive Lock),也称为写锁(Write Lock),是确保数据一致性的重要工具。当一个事务对某行数据加上排他锁时,其他事务既不能读取也不能修改该数据。这种锁通常在进行更新或删除操作时自动应用,以防止数据冲突。本文将通过具体实例来展示排他锁的使用方法。 1. 什
阅读全文
摘要:在关系型数据库的使用中,锁机制是保障数据一致性和完整性的关键工具。尤其在并发环境下,合理使用锁可以有效避免数据冲突与不一致问题。本文将详细介绍MySQL中的共享锁(Shared Lock),并通过实际案例展示其具体应用场景。 1. 什么是共享锁(Shared Lock)? 共享锁,也称为读锁(Rea
阅读全文
摘要:MySQL支持多种锁机制,以确保数据的一致性和完整性。其中,行级锁(Row-Level Locking)是一种细粒度的锁机制,能够锁定单行数据,从而允许高并发访问。本文将简要介绍MySQL行级锁的概念、使用场景及其优缺点。 行级锁的概念 行级锁是一种细粒度的锁机制,允许事务在操作数据时仅锁定特定的行
阅读全文
摘要:在数据库操作中,保持数据一致性和完整性至关重要。乐观锁(Optimistic Lock)是一种不锁定资源的锁机制,它在数据更新时才会检测是否发生冲突。本文将介绍乐观锁的概念、使用方法、优缺点,并特别罗列它与悲观锁的区别。 乐观锁的概念 乐观锁基于这样一个假设:数据冲突并不频繁发生,因此在读取数据时不
阅读全文
摘要:在数据库操作中,确保数据一致性和完整性至关重要。悲观锁(Pessimistic Lock)是一种锁机制,它在读取数据时就对其加锁,从而防止其他事务同时修改该数据。本文将介绍悲观锁的概念、使用方法,以及它的优点和缺点。 悲观锁的概念 悲观锁是一种认为并发操作总会发生冲突的锁机制。当一个事务读取数据时,
阅读全文
摘要:mysql left join 右表多条记录 MySQL中的LEFT JOIN语句用于从左表(table1)中返回所有记录,即使右表(table2)中没有匹配的记录。如果右表有多条匹配左表中一条记录的记录,结果中将会有多个行反映这一点。 例如,有两个表: employees (左表) employe
阅读全文
摘要:在 SQL 查询中,使用 NULL 值的比较需要使用 IS NULL 或 IS NOT NULL 运算符,而不是使用等号(=)进行比较。 如果您想筛选出 bc.id 不为 NULL 的记录,可以使用 IS NOT NULL 运算符进行条件判断。 以下是修改后的示例查询: sql 复制 SELECT
阅读全文
摘要:页级锁是 MySQL 中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突少,但速度慢。因此,采取了折衷的页级锁,一次锁定相邻的一组记录。BDB 引擎支持页级锁。 从上到下,锁的粒度逐渐细粒化, 但实现开销逐渐增大。 同时我们也要须知,表锁,页锁,行锁并不是一个具体的锁,仅代表
阅读全文
摘要:1.全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是Flush tables with read lock ,即FTWRL。 MySQL全局锁是一种数据库级别的锁,用于在执行特定操作时阻塞其他会话对数据库的访问。当全局锁被获取时,其他会话的读写操作将被暂停,直到全局锁被
阅读全文
摘要:1.lock table t1 read: 1.1.当前线程: 读/写当前表/其他表: unlock tables; lock table t1 read; select * from t1; INSERT INTO `t1` (`c2`, `c3`, `c4`) VALUES ('1', '1',
阅读全文
摘要:什么是元数据锁(meta data lock,MDL) 在MySQL5.5.3之前,有一个著名的bug#989(bug链接: MySQL Bugs: #989: If DROP TABLE while there’s an active transaction, wrong binlog order
阅读全文
摘要:一:主要区别 TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据。目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用标签引用,这样的博客就可以使用TEXT类型。而BLOB就可以把图片换算成二进制保存到数据库中。 二、类型区别 BL
阅读全文
摘要:update `badges` set `cat_point` = CASE WHEN level >= 1 THEN POW(2, `level` - 1) ELSE 0 END where name not like '%Steam%'; if level >=1 : cat_point = P
阅读全文