数据库
文章平均质量分 85
goTsHgo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JOIN 后面使用on过滤和WHERE 条件过滤的区别
在 SQL 中,LEFT JOIN和WHERE条件的使用方式会直接影响查询结果。原创 2024-12-23 15:37:47 · 1729 阅读 · 0 评论 -
实现缓慢变化维中的审计表
的配合,完整实现了缓慢变化维 的历史管理和审计功能。设计兼顾了性能、历史追踪和数据审计的需求,同时代码简洁易维护。原创 2024-12-03 15:03:00 · 613 阅读 · 0 评论 -
GROUP BY 比 DISTINCT 更高效的主要原因
GROUP BY 比 DISTINCT 更高效,主要原因在于两者的执行方式不同:1、执行方式的差异: 数据库优化器对 GROUP BY 有更多优化策略,比如直接使用哈希表、跳过重复项等。因此,在实际执行中,GROUP BY 能避免不必要的额外开销,而 DISTINCT 需要更多内存和临时表去完成去重。 在查询的设计上,如果你的目标是分组而不仅仅是去重,并且可能会进行聚合操作,那么使用 GROUP BY 会让数据库更容易优化,也更高效。原创 2024-10-29 15:27:03 · 766 阅读 · 0 评论 -
InnoDB 的等待图(Wait-for Graph)的原理详解
InnoDB 的等待图(Wait-for Graph)通过图结构记录了事务之间的锁依赖关系,并通过检测图中的循环依赖来发现死锁。在死锁检测到之后,InnoDB 会通过回滚其中一个事务来解决死锁。等待图的实现依赖于全局锁表,InnoDB 通过这种机制保证了事务的顺利执行,并在高并发场景下能够自动处理死锁问题。等待图和死锁检测机制在 InnoDB 源代码中的实现是相对复杂的,但它们对于保证事务系统的可靠性和高并发性至关重要。原创 2024-10-23 17:20:40 · 1601 阅读 · 0 评论 -
MySQL中InnoDB 的两阶段锁协议 原理详解
InnoDB 的两阶段锁协议是其事务管理系统的核心组成部分,通过严格的加锁和解锁控制,保证了数据库在并发情况下的事务隔离性和数据一致性。源代码中加锁与解锁的管理体现了这种协议的严密性,而通过对锁表的管理以及死锁检测机制,InnoDB 能够在保证数据安全的同时最大化系统的并发性能。两阶段锁协议的底层原理和源代码解析帮助我们理解 InnoDB 如何平衡数据一致性与系统并发性能,这对于优化数据库操作和调优事务性能具有重要意义。原创 2024-10-23 17:11:32 · 1466 阅读 · 0 评论 -
MySQL的 Next-Key Lock 底层原理详解
Next-Key Lock 主要用于防止幻读现象的发生。它的作用是锁定特定的索引记录及其前后的间隙,以保证在一个事务期间,其他事务无法插入位于该间隙的记录。特点锁定特定索引记录。锁定索引记录之前的间隙。适用于范围查询,以防止其他事务在查询范围内插入新记录。Next-Key Lock 是 InnoDB 中非常重要的锁机制,它通过锁定索引记录及其间隙,避免了幻读现象,保障了事务的隔离性和一致性。原创 2024-10-23 16:57:23 · 1836 阅读 · 0 评论 -
MySQL的隐式锁(Implicit Lock)原理详解
在 MySQL 的 InnoDB 存储引擎中,锁是用于管理并发事务访问数据的重要机制。InnoDB 存储引擎中支持多种类型的锁,主要包括显式锁(如共享锁、排他锁)和隐式锁。隐式锁(Implicit Lock)是一种特殊的锁类型,与显式锁(Explicit Lock)相对。隐式锁不需要显式地在全局锁哈希表(lock_sys)中注册锁结构,而是通过记录本身的状态(例如事务 ID,原创 2024-10-23 16:08:44 · 1575 阅读 · 0 评论 -
MySQL 的元数据锁(Metadata Locks, MDL)原理详解
MySQL 中的元数据锁用于保护数据库对象(如表、视图等)的结构和状态,防止在一个事务执行期间对这些对象进行不一致的修改。元数据锁确保多个事务对同一数据库对象的访问是安全的,防止数据不一致性或冲突。通过元数据锁,MySQL 在处理数据库对象的并发操作时提供了强大的保证,确保系统的稳定性和数据一致性。在 MySQL 的 InnoDB 存储引擎中,元数据锁的实现涉及多个源文件,特别是在。这种设计使得元数据锁在保证数据一致性的同时,最大限度地提升了系统的并发性能。在该文件中,定义了元数据锁的结构和主要操作。原创 2024-10-23 14:34:17 · 1547 阅读 · 0 评论 -
MySQL 自增锁 (Auto-Increment Lock) 的原理详解
自增锁的主要目的是确保自增值在并发插入时唯一且递增。三种自增锁模式:传统模式(表级锁)、连续模式(轻量级互斥锁)和无锁模式(批量分配自增值),每种模式适用于不同的并发场景。互斥锁和表级锁的机制在源码中通过和等函数实现,自增值的生成由控制。批量插入和缓存机制提高了自增值生成的效率,特别是在高并发的场景下,通过提前分配自增值提升性能。自增锁的灵活机制使 MySQL 在处理大规模并发插入时,既能保持自增值的唯一性,又能通过不同的锁策略在性能和一致性之间取得平衡。原创 2024-10-23 14:06:08 · 1715 阅读 · 0 评论 -
MySQL 的意向锁(Intention Locks)原理详解
意向锁是为了提高 MySQL 锁管理效率而设计的,允许 MySQL 在表级快速判断是否可以加锁。两种意向锁类型:意向共享锁(IS)和意向独占锁(IX),用于表示事务想要加的行级锁类型。源码实现表现在和等函数中,意向锁通过检查锁的兼容性确保事务在行级和表级加锁的正确性。意向锁的作用是避免在加表锁时遍历所有行锁,从而大幅提高系统性能。通过意向锁,MySQL 能有效地管理复杂的锁冲突场景,特别是在行级锁和表级锁同时存在时提供了明确的锁定层次,防止冲突并保持高效的锁操作。原创 2024-10-23 10:59:59 · 1976 阅读 · 0 评论 -
MySQL 的联合索引的特点
MySQL 的联合索引(又称)是指在一个索引中包含多个列,允许在这些列上同时进行查询优化。原创 2024-10-23 10:35:21 · 1170 阅读 · 0 评论 -
面试题:半年前的sql当时能正常跑,现在跑不了,有哪些原因?
一年前可以正常运行的 SQL 查询现在无法运行,可能有多种原因。数据库系统、数据表结构、索引、权限、数据库引擎版本等都可能发生变化,从而导致查询失败。原创 2024-10-10 16:55:03 · 1374 阅读 · 0 评论 -
MySQL的驱动表和被驱动表
在多表连接查询中,MySQL 会首先扫描的表称为驱动表。驱动表的每一行数据都需要与被驱动表中的数据进行匹配,以生成最终的结果集。原创 2024-10-09 14:43:01 · 1492 阅读 · 0 评论 -
MySQL 的 InnoDB 存储引擎中的 排他锁 详解
X 锁(排他锁)是一种严密的锁类型,当一个事务对一条记录(或多个记录)加上排他锁时,其他事务不能再对该记录进行任何操作,直到锁被释放为止。原创 2024-10-09 14:33:52 · 1774 阅读 · 0 评论 -
MySQL 锁 简介
MySQL 的锁机制通过细粒度的锁控制来优化并发性能,从表锁到行锁、从隐式锁到显式锁,以及通过多版本并发控制 (MVCC) 进一步提高读性能。锁的底层实现依赖于事务管理、锁结构体的组织和管理机制,特别是死锁检测与锁调度策略的结合,可以有效避免长时间等待和死锁问题。理解锁的细节,可以帮助数据库管理员和开发者在实际生产中进行针对性的优化。原创 2024-10-09 12:29:04 · 1068 阅读 · 0 评论 -
HBase 的基本架构 详解
HBase 是一个分布式的、面向列的数据库,构建在 HDFS(Hadoop Distributed File System)之上,提供高效的随机读写操作。为了全面理解 HBase 的基础架构,需要从逻辑架构、物理存储、组件之间的交互、数据管理和底层设计出发,结合源码进行深入剖析。原创 2024-09-27 17:36:29 · 2199 阅读 · 0 评论 -
用户维度 简介
用户行为和属性的动态变化性使得分析和跟踪变得复杂,但这些变化往往能揭示用户的最新需求和偏好。理解并捕捉这些频繁变化的维度,有助于企业更好地进行用户分群、个性化推荐和精准营销,进而提高用户的粘性和转化率。用户缓慢变化的属性反映了更为长期的个人特征和稳定的生活模式。这些属性在用户行为分析和长期趋势预测中具有重要作用,帮助企业进行生命周期管理、长期客户维系和品牌建设。例如,了解用户的年龄、职业、家庭结构等缓慢变化的属性,可以帮助企业制定长期的市场策略和产品开发计划,进而提升用户的忠诚度和终身价值。原创 2024-09-23 15:48:13 · 1333 阅读 · 0 评论 -
数据处理技术——数据回溯简介
数据回溯(Data Provenance/Lineage)是指追踪和记录数据的来源、变更历史以及处理流程的技术。它可以帮助我们了解数据从何而来、如何被修改、在什么时候被处理过,从而确保数据的可追溯性。其核心目的是提供数据操作的透明度,确保数据的完整性和可信度。总之,数据回溯是确保数据可靠、透明和合规的重要工具,适用于各种需要维护数据历史记录和可追溯性的领域。在数据管理和分析中非常有用,能够帮助企业和组织更好地管理、审计和恢复数据。原创 2024-09-19 08:40:12 · 2059 阅读 · 0 评论 -
拉链表简介
拉链表是一种用于处理哈希冲突的常见方法。其基本思想是,当多个键在哈希表中被映射到相同的哈希桶(bucket)时,使用一个链表来存储这些冲突的元素。这使得每个哈希桶中的元素都是链表节点,从而有效处理哈希冲突。原创 2024-09-13 14:59:07 · 728 阅读 · 0 评论 -
Memcached介绍和详解
开源:Memcached是一个开源项目,由Danga Interactive为LiveJournal开发。高性能:以高效的内存存储和检索为目标,能处理大规模数据请求。分布式:支持多台服务器的分布式缓存系统,便于水平扩展。键值存储:采用简单的键值对存储方式,支持字符串、对象等多种数据类型。原创 2024-07-03 14:28:31 · 1000 阅读 · 0 评论 -
数据库设计原理——批量转储技术
因此,为了降低系统开销,提高性能,通常会使用批量转储技术来合并多个数据项进行批量操作,减少数据库操作的次数,从而减少连接、事务、网络等开销,提高系统的效率。它的基本原理是将多个数据项合并为一个批量操作进行处理,从而减少单独处理每个数据项所需的开销,提高系统的效率。总的来说,批量转储技术通过合并多个数据项进行批量操作,从而降低系统开销,提高性能,并减少资源占用。减少数据库操作次数通常可以提高系统的性能,特别是在大规模数据处理的场景下。减少数据库连接、事务管理等资源的占用,从而释放系统资源。原创 2024-08-01 11:47:09 · 489 阅读 · 0 评论
分享