数据库
文章平均质量分 80
liulanba
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
sql语句的执行过程
本文详细解析了MySQL中SQL语句的端到端执行过程。首先介绍了客户端连接建立(TCP三次握手、认证)和SQL发送(MySQL协议数据包结构)的细节。随后深入服务器端处理流程:连接器创建线程、解析器生成AST语法树、优化器选择最佳执行计划(基于成本估算),最后执行引擎通过存储引擎(以InnoDB为例)访问数据。整个过程涉及B+树索引扫描、缓冲池管理、数据页加载等核心机制,通过代码片段和图表展示了MySQL处理SQL查询的完整技术栈。原创 2025-08-08 00:43:45 · 780 阅读 · 0 评论 -
MySQL 主从复制详解
MySQL主从复制技术解析 摘要:本文详细介绍了MySQL主从复制的核心原理、配置流程和运维管理。主要内容包括:1)主从复制工作原理,通过二进制日志(Binlog)和中继日志(Relay Log)实现数据同步;2)完整的配置流程,包含主从库参数设置、复制账户创建和状态监控;3)三种复制模式(异步、半同步和组复制)的对比分析;4)日常监控方法和关键指标检查;5)常见故障处理方案。文章提供了实用的配置示例和脚本,帮助DBA高效搭建和维护MySQL主从架构,确保数据一致性和高可用性。原创 2025-08-08 00:12:12 · 303 阅读 · 0 评论 -
InnoDB的redo log和 undo log
文章摘要: Redo Log(重做日志)和Undo Log(回滚日志)是InnoDB的核心机制,分别保障事务的持久性和原子性。 Redo Log 采用物理逻辑日志记录数据页修改,通过WAL(Write-Ahead Logging)机制确保事务提交后修改不丢失,结合日志缓冲区、检查点(Checkpoint)和LSN(日志序列号)实现高效崩溃恢复,并利用组提交优化高并发写入性能。 Undo Log 记录逻辑逆操作(如INSERT对应DELETE),支持事务回滚和MVCC,通过独立表空间存储提高管理效率。两者协同原创 2025-07-23 22:45:56 · 984 阅读 · 0 评论 -
MySQL事务详解:ACID特性与实现机制
ACID是数据库事务的四大特性,包括原子性(事务要么全成功要么全失败)、一致性(事务前后数据满足完整性约束)、隔离性(并发事务互不干扰)和持久性(提交后修改永久生效)。数据库通过日志(如WAL)、锁机制(如两阶段锁)和多版本并发控制(MVCC)等技术实现这些特性。以银行转账为例,ACID确保了转账操作的可靠性,如原子性防止部分成功,一致性保证总额不变,隔离性避免并发干扰,持久性确保数据永久保存。这些机制共同保障了数据库的可靠性和数据一致性。原创 2025-07-23 22:45:23 · 898 阅读 · 1 评论 -
分布式事务中的2PC和 3PC
摘要: 2PC和3PC是分布式事务中确保原子性的核心协议。2PC通过准备和提交两阶段协调参与者,但存在阻塞和协调者单点故障问题。3PC引入预提交阶段和超时机制,降低阻塞风险,但实现更复杂且无法彻底解决不一致问题。两者均依赖协调者,适用于不同场景:2PC简单高效但容错差,3PC通过额外开销提升可用性,但网络分区下仍可能不一致。实际应用中需权衡一致性与性能需求。原创 2025-07-23 22:22:47 · 740 阅读 · 0 评论 -
mysql的information_schema浅析
information_schema 是 MySQL 中的一个虚拟数据库,它包含了关于 MySQL 服务器的所有元数据。原创 2024-06-24 23:09:23 · 1254 阅读 · 0 评论 -
Binlog 如何控制崩溃恢复时的重做(COMMIT)或回滚(ROLLBACK)
Binlog 如何控制崩溃恢复时的重做(COMMIT)或回滚(ROLLBACK)原创 2024-06-13 13:06:15 · 1965 阅读 · 0 评论 -
数据库的连接池详解
数据库连接池是一种管理和维护数据库连接的机制,用于提高数据库访问的性能和效率。连接池通过在应用程序启动时创建一组数据库连接,并在需要时将这些连接分配给应用程序,然后在不再需要时将其返回到池中。这可以减少创建和销毁数据库连接的开销,并优化数据库资源的使用。连接的创建和销毁开销:创建和销毁数据库连接是一项开销较大的操作。连接池通过预先创建一组连接,避免了每次请求都创建新连接的开销。这些连接在应用程序启动时初始化,并一直保持活动状态,直到应用程序关闭。原创 2023-12-26 23:33:34 · 3213 阅读 · 0 评论 -
mysql索引失效
在MySQL中,索引失效指的是查询语句无法有效地使用索引,而必须进行全表扫描。索引失效可能会导致查询性能下降,特别是在处理大量数据时。原创 2024-03-20 12:46:45 · 2021 阅读 · 0 评论 -
mysql的外键
外键定义了一个表中的列(或多列)与另一个表中的数据的关系,通常是通过主键和外键之间的关联。在上面的例子中,on_delete=models.CASCADE 表示当与之关联的 Author 对象被删除时,相关的 Book 对象也会被删除。on_delete 参数: 外键字段还有一个必需的参数 on_delete,它指定了在关联的对象被删除时采取的行为。主键和外键: 主表中的列通常是主键,而从表中的列则是外键,它与主表的主键相对应。主表和从表: 在两个表中,包含外键的表被称为主表,被引用的表是从表。原创 2023-11-29 11:23:44 · 919 阅读 · 0 评论 -
数据库的级联删除
例如,如果有三个模型 A、B、C,A 与 B 有外键关系,B 与 C 有外键关系,如果删除 A,则 B 和 C 中相关的对象也会被删除。如果删除与 OtherModel 关联的 MyUser 对象,OtherModel 中的 user 外键将被设置为指定的值。在这个例子中,如果删除与 OtherModel 关联的 MyUser 对象,相关的 OtherModel 对象也将被删除。这是级联删除的默认选项。删除 A 对象时,与 A 关联的 B 对象也将被删除,进而与 B 关联的 C 对象也会被删除。原创 2023-11-22 23:01:44 · 2238 阅读 · 0 评论 -
分布式锁/乐观锁/悲观锁/死锁
分布式锁是一种用于在分布式系统中实现并发控制的机制。在分布式环境中,多个节点或进程同时访问共享资源时,需要确保数据的一致性和正确性。分布式锁提供了一种方法来协调并发访问,以避免数据竞争和冲突。目的:分布式锁的主要目的是确保在分布式系统中的多个节点之间对共享资源的访问是互斥的,即同一时间只有一个节点可以获取锁并执行关键代码段,其他节点需要等待锁的释放才能继续执行。实现方式:常见的分布式锁实现方式包括基于数据库、基于缓存、基于共享存储和基于协调服务等。具体选择取决于系统的需求、性能要求和可用的技术栈。原创 2023-09-19 13:24:22 · 2305 阅读 · 0 评论 -
SQL故障和排查解决浅析
慢SQL是指在数据库中执行的SQL查询或操作的执行时间超过了预期或可接受的时间。这可能是由多种原因引起的,包括查询优化不当、索引缺失、不合理的数据模型设计、高并发负载等。原创 2023-09-14 13:26:49 · 2059 阅读 · 0 评论 -
八股取士--mysql篇
MySQL 高频知识点解析 一、基础知识 关系型数据库以二维表形式组织数据,MySQL是典型的关系型数据库管理系统,支持常见数据类型包括数值、字符串、日期时间和布尔类型。 核心概念解析: char和varchar的区别:char是固定长度,适合定长字段;varchar是可变长度,节省空间 float和double的区别:float单精度7位,double双精度15位 datetime和timestamp的区别:datetime范围更大,timestamp与时区相关且占用空间小 存储引擎对比: InnoDB:原创 2022-01-14 11:19:14 · 8216 阅读 · 0 评论 -
mysql语法大全
首先来一个全局总览,后面我会分别对每个命令进行说明:然后输入密码登录数据库否则,打开mysql command line并输入密码进入数据库。原创 2023-04-13 20:15:01 · 46796 阅读 · 4 评论 -
mysql 索引
虽然 UUID 是一种广泛使用的全局唯一标识符,但在 MySQL 中作为索引字段时,可能会因为其较大的存储空间和随机性带来显著的性能问题。特别是在使用CHAR(36)或类型存储 UUID 时,索引效率较低,插入操作频繁导致索引树的分裂,进而影响性能。建议在可能的情况下使用BINARY(16)类型存储 UUID,或者使用自增整数作为主键,优化性能。原创 2022-10-25 13:10:05 · 21185 阅读 · 0 评论 -
db_connection.execute(sql_str, *args)执行sql语句
在db_connection.execute(sql_str, *args)语句中,sql_str是SQL查询语句,*args是一个元组,包含查询语句中占位符需要的参数。在主程序中,调用函数func并传入两个参数,第一个参数是SQL语句字符串sql_str,表示从表volumes中查询update_at字段小于2022的所有数据。因此,execute方法将接收元组中的值,并使用它们来替换查询语句中的占位符。在这段代码中,*args是将参数以元组的形式进行传递,*是用于对元组或列表进行解包的操作符。原创 2023-03-20 20:30:18 · 4190 阅读 · 0 评论 -
MySQL 的 LIKE 语句
需要注意的是,使用 LIKE 进行模糊查询可能会影响查询效率,尤其是在对大量数据进行查询时。MySQL 的 LIKE 语句用于在 WHERE 子句中模糊匹配数据,常用于模糊查询。其中 columnN 是需要进行模糊匹配的列名,pattern 是用于匹配的模式字符串。-用于表示一个范围,例如[a-z]表示从a到z的所有字母。a’ 两位且结尾字母是a的。‘%a’ 以a结尾的数据。‘a%’ 以a开头的数据。’ 两位且开头字母是a的。‘%a%’ 含有a的数据。原创 2023-03-20 11:30:08 · 9560 阅读 · 0 评论 -
mysql的distinct和group by的区别
需要注意的是,GROUP BY 和 DISTINCT 都会对查询的性能产生一定的影响。因此,在使用 GROUP BY 时需要谨慎,尽可能选择合适的索引和优化查询语句,以减少查询的时间和资源消耗。总的来说,GROUP BY 用于对数据进行分组和聚合操作,DISTINCT 则用于选择唯一的值。结果会按照商品类别分组,并且对于每个类别,会返回该类别下的任意一条记录中的供应商信息。此外,GROUP BY 通常会产生比 DISTINCT 更多的结果,因为它按照指定的列进行分组,而每个分组内可能包含多个不同的值。原创 2023-03-09 21:01:36 · 5617 阅读 · 0 评论 -
sqlchemy filter和filter_by
3、在使用多条件匹配的时候,filter需要借助sqlalchemy里的and_或者连续调用filter来实现, 而filter_by不需要,直接把多个匹配条件写在一起。1、filter引用列名时,使用“类名.属性名”的方式,比较使用两个等号“==”2、filter_by引用列名时,使用“属性名”,比较使用一个等号“=”4、在使用多条件匹配时,用到>=、>、原创 2022-10-25 13:11:58 · 3504 阅读 · 0 评论
分享