
MySQL
文章平均质量分 86
数据库基本语法与操作
Jesslili
java小小白
展开
-
MySQL解决并发事务带来的问题--锁--锁的内存结构
上篇:MySQL解决并发事务带来的问题–锁 InnoDB锁的内存结构 对一条记录加锁的本质就是在内存中创建一个锁结构与之关联,那么是不是一个事务对多条记录加锁,就要创建多个锁结构呢?如果一个事务要获取10000条记录的锁,就要生成10000个这样的结构,开销就太大了。 InnoDB在对不同记录加锁时,如果符合下边这些条件,那么这些记录的锁就可以被放到一个锁结构中: 在同一个事务中进行加锁操作 被加锁的记录在同一个页面中 加锁的类型是一样的 等待状态是一样的 锁所在的事务信息:哪个事务生原创 2021-04-19 20:28:09 · 353 阅读 · 1 评论 -
MySQL解决并发事务带来的问题--锁
事务相关:MySQL事务的隔离级别与MVCC详解 一、锁 事务并发执行时可能带来的各种问题,并发事务访问相同记录的情况大致可以划分为3种: 读-读情况:即并发事务相继读取相同的记录。 写-写情况:即并发事务相继对相同的记录做出改动。 读-写或 写-读情况:也就是一个事务进行读取操作,另一个进行改动操作。 1. 脏写问题 在写-写情况下会发生脏写问题,而任何一种隔离级别都不允许这种问题的发生。所以在多个未提交事务相继对一条记录做改动时,需要让它们排队执行,这个排队的过程其实是通过锁来实现的。这个所谓的锁其原创 2021-04-19 20:09:53 · 556 阅读 · 1 评论 -
MySQL事务的隔离级别与MVCC详解
一、事务的隔离级别 先创建一个表: #主键命名为number,而不是id,是想和后边要用到的事务id做区别 CREATE TABLE hero ( number INT, name VARCHAR(100), country varchar(100), PRIMARY KEY (number) ) Engine=InnoDB CHARSET=utf8; INSERT INTO hero VALUES(1, '刘备', '蜀'); 对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上原创 2021-04-19 17:21:52 · 395 阅读 · 0 评论 -
MySQL调节磁盘和CPU的矛盾--InnoDB的缓存
一、缓存的重要性 对于使用InnoDB作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是以页的形式存放在表空间中的,而所谓的表空间只不过是InnoDB对文件系统上一个或几个实际文件的抽象,也就是说我们的数据说到底还是存储在磁盘上的。 InnoDB存储引擎在处理客户端的请求时,当需要访问某个页的数据时,就会把完整的页的数据全部加载到内存中,也就是说即使我们只需要访问一个页的一条记录,那也需要先把整个页的数据加载到内存中。将整个页加载到内存中后就可以进行读写访问原创 2021-04-18 15:27:13 · 436 阅读 · 1 评论 -
Mysql快速查询的秘籍--B+树索引的使用
上篇 Mysql快速查询的秘籍–B+树索引的理解 一、索引的代价 空间上的代价 每建立一个索引都要为它建立一棵 B+ 树,每一棵 B+ 树的每一个节点都是一个数据页,一个页默认会占用 16KB 的存储空间,一棵很大的 B+ 树由许多数据页组成。 时间上的代价 每次对表中的数据进行增、删、改操作时,都需要去修改各个 B+ 树索引。 增、删、改操作可能会对节点和记录的排序造成破坏,所以存储引擎需要额外的时间进行一些记录移位,页面分裂、页面回收等操作来维护好节点和记录的排序。 一个表上索引建的越多,就会占用越原创 2021-04-10 11:58:46 · 434 阅读 · 1 评论 -
Mysql快速查询的秘籍--B+树索引的理解
一、没有索引时的查找 SELECT [列名列表] FROM 表名 WHERE 列名 = xxx; 1. 在一个页中查找 假设目前表中的记录比较少,所有的记录都可以被存放到一个页中。可以根据搜索条件的不同分为两种情况: 以主键为搜索条件 以其他列作为搜索条件 2. 在很多页中查找 大部分情况下我们表中存放的记录都是非常多的,需要好多的数据页来存储这些记录。在很多页中查找记录的话可以分为两个步骤: 定位到记录所在的页。 从所在的页内中查找相应的记录。 在没有索引的情况下,不论是根据主键列或者其他列的值原创 2021-04-10 10:09:55 · 549 阅读 · 0 评论 -
Mysql存储引擎---InnoDB数据页结构
一、数据页结构 数据页代表的这块 16KB 大小的存储空间可以被划分为多个部分,不同部分有不同的功能,各个部分如图所示: 一个 InnoDB 数据页的存储空间大致被划分成了 7 个部分,有的部分占用的字节数是确定的,有的部分占用的字节数是不确定的。 记录的存储 在页的7个组成部分中,我们自己存储的记录会按照我们指定的行格式存储到 User Records 部分。但是在一开始生成页的时候,其实并没有 User Records 这个部分,每当我们插入一条记录,都会从 Free Space 部分,也就是尚未使原创 2021-04-09 12:17:07 · 221 阅读 · 0 评论 -
深入理解MySQL索引之B+Tree
正确的创建合适的索引,是提升数据库查询性能的基础。在正式讲解之前,对后面举例中使用的表结构先简单看一下: create table user ( id bigint not null comment 'id' primary key, name varchar(200) null comment 'name', age bigint null comment 'age', gender i...转载 2021-04-01 15:00:22 · 188 阅读 · 0 评论 -
Mysql存储引擎---InnoDB的行格式及行溢出问题
一、局部性原理 在InnoDB中,数据会存储到磁盘上,在真正处理数据时需要先将数据加载到内存。 表中读取某些记录时,InnoDB存储引擎不需要一条一条的把记录从磁盘上读出来,InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB,也就是说,当需要从磁盘中读数据时每一次最少将从磁盘中读取16KB的内容到内存中,每一次最少也会把内存中的16KB内容写到磁盘中。 二、InnoDB行格式 一行记录可以以不同的格式存在InnoDB中,行格式分别是原创 2021-03-31 20:37:15 · 710 阅读 · 0 评论 -
MySQL逻辑架构
MySQL逻辑架构大致分为三层 最上层并不是MySQL独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处理、授权认证、安全等等。 第二层架构,大多数MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数。所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。 第三层包含了存储引擎,存储引擎负责MySQL中数据的存储和提取。每个存储引擎都有它的优势和劣势。服务器通过API与存储引擎进行通信。这些接口屏蔽了不同的存储引擎之间的差异,使得这些差.原创 2021-03-31 19:19:35 · 142 阅读 · 0 评论 -
MySQL DCL(管理用户,授权)
1. 管理用户 添加用户: 语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 删除用户: 语法:DROP USER '用户名'@'主机名'; 修改用户密码: UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名'; UPDATE USER SET PASSWORD = P...原创 2020-02-21 16:39:25 · 346 阅读 · 0 评论 -
MySQL 事务操作
文章目录1. 事务的基本介绍1. 概念2. 操作3. 例子4. MySQL数据库中事务默认自动提交2. 事务的四大特征:3. 事务的隔离级别(了解) 1. 事务的基本介绍 1. 概念 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。 2. 操作 开启事务: start transaction; 回滚:rollback; 提交:commit; 3. 例子 RE...原创 2020-02-21 16:30:59 · 420 阅读 · 0 评论 -
MySQL 多表查询详解(含例子)
文章目录一.基础语法二.多表查询的分类1. 内连接查询1. 隐式内连接2. 显式内连接:3. 内连接查询:2. 外链接查询1. 左外连接:2. 右外连接:3. 子查询1.概念2. 子查询不同情况三. 多表查询练习 一.基础语法 查询语法: select 列名列表 from 表名列表 where.... 准备sql: # 创建部门表 create table dept( id int ...原创 2020-02-21 14:42:04 · 615 阅读 · 0 评论 -
MySQL 排序 约束 数据库设计
文章目录第一章 DQL查询语句1. 排序2.聚合函数3. 分组查询4. 分页查询第二章 约束1.非空约束2. 唯一约束3. 主键约束4. 外键约束三. 数据库的设计1. 多表之间的关系2. 数据库设计的范式3.数据库的备份和还原 第一章 DQL查询语句 1. 排序 eg:select * from student order by math ASC; 单列排序: 只按某一个字段进行排序,单列排序...原创 2020-02-21 13:57:45 · 630 阅读 · 0 评论 -
MySQL基础全面总结
文章目录一.配置1.MySQL服务启动2.MySQL登录3.MySQL退出4.MySQL目录结构二. SQL1.什么是SQL?2.SQL通用语法3. SQL分类三.DDL:操作数据库、表1. 操作数据库:CRUD2. 操作表四.DML:增删改表中数据1. 添加数据2. 删除数据3. 修改数据五.DQL:查询表中的记录1. 语法:2. 基础查询3. 条件查询 一.配置 1.MySQL服务启动 手动...原创 2020-02-20 14:57:38 · 352 阅读 · 0 评论