mysql锁
一、锁的分类 根据锁的粒度分类 全局锁 表级锁 行级锁 二、全局锁 全局锁用于锁定整个数据库。 实现方式 全局读锁:使用 FLUSH TABLES WITH READ LOCK (FTWRL) 命令,整个数据库处于只读状态,适用于备份操作。 使用场景 全局读锁:在进行全库备份时,为了确保数据一致性,需要对整个数据库加全局读锁,防止其他事务进行写操作…
执行计划
id id字段表示查询中每个操作的唯一标识符,其值为整数。这个字段主要有以下几个作用: 区分不同的查询:在复合查询(如子查询或联合查询)中,id字段用于区分不同的子查询或查询块。每个子查询或查询块都会有一个唯一的id。 执行顺序:在执行计划中,id值较大的查询步骤先执行。通常,子查询的id值会比父查询的id值大。 层次结构:在一些复杂的查询中,id…
mysql索引
简洁的概念 有序的数据结构(hash索引除外),因为有序所有能够实现快速查找 索引不仅用于查找还用于排序场景,后者是经常被忽略的 索引数据类型 B-tree 索引:这是 MySQL 中最常见的索引类型,适用于大多数数据类型,包括整数、字符、日期等。B-tree 索引能够快速定位到满足条件的数据行,因此被广泛用于普通索引、唯一索引、主键索引等。 哈希…
分库分表分片
分库 将不同的表存在不同的数据库中:是将一个业务系统的数据分布到多个数据库实例中。每个数据库实例保存一部分数据,这样可以减轻单个数据库实例的压力。 实际应用例子:假设你有一个电商平台,其中有用户数据和订单数据。用户数据可以放在一个数据库实例中,而订单数据放在另一个数据库实例中。这样,当用户数据和订单数据同时增长时,两个数据库实例可以分别扩展,提升整…
mysql多版本控制MVCC
MVCC 多版本数据并发控制 Mul-Version Concurrency Control),对数据的每一次修改都会生成一个新的版本(即便事务没有commit),注意,很容易理解成同时在多个事物中修改同一行数据,实际上如果当前已有事物对某一行数据进行修改且没有commit,那么其他事物是无法对该数据进行修改的,这也意味着不可能产生undo log…
持久性实现原理redo log & bin log
重做日志(Redo Log) redo log是记录事务过程中的任何修改,这些修改在事物提交之前数据是不会真真写入到磁盘的 写前日志(Write-Ahead Logging, WAL):在数据被写入数据库页之前,所有修改都会先写入到重做日志中。这个过程称为写前日志策略,确保即使在数据库突然崩溃的情况下,所有提交的事务都可以通过重播日志记录重新构建。…
mysql的架构
连接层 最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 第…
MySQL中的各种 JOIN 操作
SQL中的7种 JOIN 操作 在 SQL 中,JOIN 操作用于将两个或多个表的数据结合起来。以下是 7 种常见的 JOIN 类型及其对应的 SQL 语法和示意图: 左连接 (LEFT JOIN) SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Ke…
计算机与大脑
为何写这篇文章 因为程序员的身份,对计算机的计算原理有一定的了解,慢慢地我发现人大脑的思维的过程与计算机计算的过程极其相似,也许发明计算机的大神就是因为人脑的思维才发明了计算机。 如果只是发现大脑和计算机工作原理相似并不会激发我想写这篇文章的想法,是因为我平时的一些思考习惯给自己带来了一些不错的帮助,而自己并不清楚其深层次的原因,而结合到计算机计算…
89岁的老程序员不讲武德
职业生涯的一些心得,不一定对,大家辨证的看吧 只有结论,没有推论,如果有感兴趣的topic可以在评论区留言,我给你讲故事 忠告 给即将踏入职场的同学一句忠告: "不要听信那些职场老油条的忠告" 竞争 刚毕业的时候总是有同学去比较offer,谁比谁多2000。 进入公司后,也随时警惕,谁比谁先晋升,谁比谁绩效好。 其实对于新同学来…