根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类,本文先讨论前两种。 全局锁 全局锁是对整个数据库实例加锁,MySQL提供的加全局读锁的命令是Flush tables with read lock(下面简称FTWRL)。当需要让整个库处于只读状态时,可以使用这个命令,之后其他线 ...
覆盖索引 假设要执行一条语句: select * from T where k between 3 and 5; 初始对列k建立了索引,表中数据为: 那么其执行流程为: 在k索引树上找到k=3的记录,取得ID=300; 到ID索引树查到ID=300对应的记录。 在k索引树上找到下一个值k=5的记录, ...
索引的常见模型 实现索引的方式有很多种,这里先介绍三种常见结构:哈希表、有序数组和搜索树。 哈希表:只适用于只有等值查询的场景。 有序数组:在等值查询和范围查询场景中的性能都非常优秀,但是在更新数据的时候需要挪动大量记录。因此,只适用于静态存储引擎。 二叉搜索树:树层数可能很高,可能一个节点上的数据 ...
事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的,这也是InnoDB取代MyISAM的重要原因之一。 隔离性与隔离级别 事务的四大特性:原子性、一致性、隔离性、持久性。本文主要讨论隔离性。 当数据库上有多个事务同时执行的时候,可能出现脏读、不可重复读 ...
16. MySQL 多版本并发控制 @目录16. MySQL 多版本并发控制1. 什么是MVCC2. 快照读与当前读2.1 快照读2.2 当前读3. 复习3.1 再谈隔离级别3.2 隐藏字段、Undo Log版本链4. MVCC实现原理之ReadView4.1 什么是ReadView4.2 设计思路 ...
比如执行一条更新语句: update T set c=c+1 where ID=2; 首先,更新语句也会走一遍查询语句的流程。除此以外,更新还涉及两个日志模块,分别是redo log和binlog。 redo log MySQL的更新用到了WAL(Write-Ahead Logging)技术,关键点 ...
摘要 本文会围绕mysql会话来详细地介绍会话的获取、使用和终止的整个过程,主要包括: 登入mysql会话:通过mysql调用命令和身份凭证获取会话资格。 使用mysql会话:比如编写SQL语句、执行SQL语句和取消已执行的SQL语句。 登出mysql会话 此外,在文章的最后,还提供了快速调用mys ...
GreatSQL通过伪装从库回放Binlog文件 一、适用场景说明 1、主库误操作恢复 利用 Binlog 在其他实例解析、回放,根据gtid只回放到指定位点。 2、网络隔离环境同步 备份恢复后可以拉去主库Binlog文件至新实例同步增量数据。 3、备份恢复遇到Binlog文件过大处理 恢复实例时有 ...
12 MySQL 数据库其它调优策略 @目录12 MySQL 数据库其它调优策略1. 数据库调优的措施1.1 调优的目标1.2 如何定位调优问题1.3 调优的维度和步骤第1步:选择适合的 DBMS第2步:优化表设计第3步:优化逻辑查询第4步:优化物理查询第5步:使用 Redis 或 Memcache ...
比如执行一条查询语句: select * from T where ID=10; 首先给出MySQL的基本架构示意图,从中也可以看到执行过程: 基本结构分为两部分: Server层。里面包含连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL大多数核心服务功能,以及所有内置函数。 存储引擎层。 ...
11-3 MySQL 中对于 PowerDesigner 的使用 @目录11-3 MySQL 中对于 PowerDesigner 的使用1. PowerDesigner的使用1.1 开始界面1.2 概念数据模型1.3 物理数据模型1.4 概念模型转为物理模型1.5 物理模型转为概念模型1.6 物理模 ...
用systemd管理GreatSQL服务详解 1.GreatSQL服务文件 官网 greatsql.service 文件 [Unit] Description=GreatSQL Server Documentation=man:mysqld(8) Documentation=http://dev.m ...
一、基本查询语句 查询所有数据: SELECT * FROM 表名; 查询特定列: SELECT 列名1, 列名2 FROM 表名; 条件查询: SELECT * FROM 表名 WHERE 条件; 模糊查询: SELECT * FROM 表名 WHERE 列名 LIKE '模式%'; 排序查询: ...
10-1 MySQL 索引优化与查询优化 @目录10-1 MySQL 索引优化与查询优化1. 数据准备2. 索引失效案例2.1 索引字段:全值匹配最优2.2 索引字段:最佳左前缀法则2.3 主键插入顺序2.4 索引字段进行了:计算、函数、类型转换(自动或手动)导致索引失效2.5 索引字段类型转换导致 ...
MySQL 索引优化是提升查询性能的关键手段之一,但有时使用不当会导致索引失效。今天我们一起来看看哪些情况下索引会失效。 1、联合索引没有使用最左前缀 失效示例:联合索引 (a,b,c) SELECT * FROM table WHERE b=1 AND c=2; -- ❌ 索引失效 正确写法: ...
MySQL查询命令 学习资料来源:数据库原理与应用——MySQL从入门到实战 单表查询(一) 基本查询语句 查询数据表中指定字段的内容 MySQL从数据表中查询数据的基本语句为SELECT语句。 SELECT语句的可选参数比较多,让我们先从最简单的开始,带大家一步一步的深入SELECT语句的使用。 ...
终止分区表变更操作时误删数据字典缓存导致MySQL崩溃分析 1. 问题简述 在 MySQL 中,当终止一个处于 committing alter table to storage engine 阶段的分区表操作时,InnoDB 会尝试进行回滚并清理数据字典缓存。不幸的是,过程中发生了误删表缓存对象的 ...
首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 “老纪的技术唠嗑局”,会持续更新和 #数据库、#AI、#技术架构 相关的各种技术内容。欢迎感兴趣的朋友们关注! 前言 OceanBase 的 LSM-Tree 存储引擎天生具有高效的写入性能,而且既能够通过旁路导入高效处理定期的批量数据 ...
MySQL派生表查询大数据量无结果问题分析与解决 一、问题发现 在客户现场的一次问题报告中发现某个带有派生表进行查询的时候,数据量少的时候有结果,但是数据量大的时候返回无记录。看下面例子: 1、准备表 CREATE TABLE `cmdb_item` ( `cm_item_id` varchar(3 ...
GreatSQL从库报错13146:字符集不一致问题处理 1.问题概述 需要将数据反向同步到源端,在使用 SELECT INTO OUTFILE 和 LOAD DATA 的方式进行数据恢复后配置同步,从库发生报错13146数据类型转换失败,导致同步异常;通过对比表结构和列的字符集,发现主从库相关表、 ...