mysql
文章平均质量分 81
一个风轻云淡
先搞钱,去养老,当保安,过日子(本人菜鸡一个,又菜又爱敲,希望能和您共同进步,当然如果您有问题,我会的,会尽量及时解答)
展开
-
索引的数据结构(3)
每一棵B+树的每一个节点都是一个数据页B+树每 层节点都是按照索引列的值 从小到大的顺序排序 而组成了 双向链表而增、删、改操作可能会对节点和记录的排序造成破坏,所以存储引擎需 要额外的时间进行一些 记录移位 , 页面分裂 、 页面回收 等操作来维护好节点和记录的排序如果 我们建了许多索引,每个索引对应的B+树都要进行相关的维护操作,会给性能拖后腿。原创 2022-09-29 07:40:54 · 506 阅读 · 0 评论 -
数据库的设计规范(1)
要想设计一个结构合理的关系型数据库,必须满足一定的范式。原创 2022-09-29 22:18:26 · 483 阅读 · 5 评论 -
一文打通ER图(手把手教你画)
一文打通ER图,手把手解决掉痛点跟难点,包含例题讲解:设某商业集团有多个商店。在其信息系统中,对“商店”记录有商店编号、商 店名、地址等信息;对销售的 “商品”记录有商品号、商品名、规格、单价等信息;对其 “职工”记录其职工编号、姓名、性别和业绩等级(优秀、良好、较差)等。每个商店可销 售多种商品,每种商品也可放在多个商店销售,每个商店销售每一种商品,需要记录每月的 销售量;每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工按照聘期规定 月薪发放工资,每个聘期长度为 1 年。(1)试画出原创 2022-12-11 21:22:58 · 49899 阅读 · 6 评论 -
MVCC实现原理之ReadView(一步到位)
Read View是一个数据库的内部快照,该快照被用于InnoDB存储引擎中的MVCC机制。简单点说,Read View就是一个快照,保存着数据库某个时刻的数据信息。Read View会根据事务的隔离级别决定在某个事务开始时,该事务能看到什么信息。就是说通过Read View,事务可以知道此时此刻能看到哪个版本的数据记录(有可能不是最新版本的,也有可能是最新版本的)。可重复读、读已提交、读未提交,这几个隔离级别都会使用Read View。原创 2022-10-08 08:42:34 · 7015 阅读 · 20 评论 -
多版本并发控制MVCC
换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样 在做查询的时候就不用等待另一个事务释放锁。原创 2022-10-08 08:05:46 · 622 阅读 · 2 评论 -
上手全局锁,死锁
全局锁的典型使用 场景 是:做 全库逻辑备份。原创 2022-10-07 08:26:16 · 736 阅读 · 3 评论 -
上手隐式锁,显式锁
对于聚簇索引记录来说,有一个 trx_id 隐藏列,该隐藏列记录着最后改动该记录的 事务id 。那么如果在当前事务中新插入一条聚簇索引记录后,该记录的 trx_id 隐藏列代表的的就是 当前事务的 事务id ,如果其他事务此时想对该记录添加 S锁 或者 X锁 时,首先会看一下该记录的trx_id 隐藏列代表的事务是否是当前的活跃事务,如果是的话,那么就帮助当前事务创建一个 X锁 (也就是为当前事务创建一个锁结构, is_waiting 属性是 false ),然后自己进入等待状态 (也就是为自己也创建一个锁原创 2022-10-07 08:13:03 · 395 阅读 · 0 评论 -
深入浅出乐观锁、悲观锁
悲观锁是一种思想,顾名思义,就是很悲观,对数据被其他事务的修改持保守态度,会通过数据库自身 的锁机制来实现,从而保证数据操作的排它性。原创 2022-10-06 08:28:15 · 810 阅读 · 5 评论 -
深入浅出InnoDB中的行锁
记录锁也就是仅仅把一条记录锁上,官方的类型名称为: LOCK_REC_NOT_GAP 。比如我们把id值为8的 那条记录加一个记录锁的示意图如图所示。仅仅是锁住了id值为8的记录,对周围的数据没有影响。原创 2022-10-06 07:55:53 · 768 阅读 · 0 评论 -
深入浅出表锁(Table Lock)
多个事务的读操作可以同时进行而不会 互相影响,相互不阻塞的。当前写操作没有完成前,它会阻断其他写锁和读锁。需要注意的是对于 InnoDB 引擎来说,读锁和写锁可以加在表上,也可以加在行上。原创 2022-10-05 17:56:56 · 1719 阅读 · 3 评论 -
MySQL并发事务访问相同记录
除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的 资源。为保证数据的一致性,需要对 并发操作进行控制 ,原创 2022-10-05 12:15:58 · 988 阅读 · 6 评论 -
事务隔离级别
MySQL是一个 客户端/服务器 架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每 个客户端与服务器连接上之后,就可以称为一个会话( Session )。每个客户端都可以在自己的会话中 向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是对于服务器来说可能同时处理 多个事务。事务有 隔离性 的特性,理论上在某个事务 对某个数据进行访问 时,其他事务应该进行 排 队 ,当该事务提交之后,其他事务才可以继续访问这个数据。但是这样对 性能影响太大 ,我们既想保持 事务的隔离性,又想让服原创 2022-10-05 09:08:37 · 809 阅读 · 0 评论 -
如何使用事务
使用事务有两种方式,分别为 显式事务 和 隐式事务 。原创 2022-10-05 08:27:47 · 1669 阅读 · 1 评论 -
数据库事务概述
满足这个状态,数据就是一致的,不满足这个状态,数据就 是不一致的!如果事务中的某个操作失败了,系统就会自动撤销当前正在执行的事务,返回到事务操作 之前的状态。原创 2022-10-04 15:18:28 · 888 阅读 · 6 评论 -
淘宝数据库,主键如何设计的?
修改会员卡号是“10000001”的会员信息, 系统的各个模块,都会获取到修 改后的会员信息,不会出现“有的模块获取到修改之前的会员信息,有的模块获取到修改后的会员信息, 而导致系统内部数据不一致”的情况。其实,客户电话也有这个问题,这也是我们在设计会员信息表的时候,允许身份证号和 电话都为空的原因。门店在添加会员的时候,先到总部 MySQL 数据库中获取这个最大值,在这个基础上加 1,然后用这个值 作为新会员的“id”,同时,更新总部 MySQL 数据库管理信息表中的当 前会员编号的最大值。原创 2022-10-03 17:50:57 · 1832 阅读 · 4 评论 -
索引失效案例
1.全值匹配我最爱,最左前缀要遵守。2.带头大哥不能死,中间兄弟不能段。3.索引列上少计算,范围之后全失效。4.like 百分写最右,覆盖索引不写*。5.不等空值还有or,索引失效要少用。6.字符串引号不可丢,SQL高级也不难。原创 2022-10-03 08:27:07 · 1171 阅读 · 12 评论 -
索引的创建与设计原则(2)(适合创建索引情况 )
其次, 对 WHERE 条件创建索引 ,因为 WHERE 才是对数据条件的过滤。连接表的数量尽量不要超过 3 张 ,因为每增加一张表就相当于增加了一次嵌套的循环,数量级增 长会非常快,严重影响查询的效率。如果进行更新的时候,更新的字段是非索引字段,提升的效率会更明显,这是因为非索引字段更 新不需要对索引进行维护。不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的。这是因 为索引会对数据按照某种顺序进行排序,所以在去重的时候也会快很多。原创 2022-10-01 07:56:06 · 696 阅读 · 14 评论 -
索引的创建与设计原则(1)
从 功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。原创 2022-09-30 11:08:36 · 233 阅读 · 0 评论 -
索引的数据结构(1)
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现 高级查找算法。原创 2022-09-28 21:14:16 · 283 阅读 · 4 评论 -
MySQL逻辑架构(2)
这样做的好处是可以让磁盘活动最小化,从而 减少与磁盘直接进行 I/O 的时间。要知道,这种策略对提 升 SQL 语句的查询性能来说至关重要。如果索引的数据在缓冲池里,那么访问的成本就会降低很多。如果存在就直接读取,如果不存在,就会通过内存或磁盘将页面存放到缓冲池中再进 行读取。,可以通过查看 innodb_buffer_pool_size 变量来查看缓冲池的大 小。原创 2022-09-27 23:13:28 · 498 阅读 · 2 评论 -
MySQL逻辑架构(1)
它使用“ 选取-投影-连接 ”策略进行查询。原创 2022-09-27 07:56:46 · 279 阅读 · 7 评论 -
子查询(2)
关联子查询通常也会和 EXISTS操作符一起来使用,用来检查在子查询中是否存在满足条件的行。NOT EXISTS关键字表示如果不存在某种条件,则返回TRUE,否则返回FALSE。条件返回 FALSE。不在子查询中继续查找。...原创 2022-08-28 19:35:53 · 258 阅读 · 6 评论 -
子查询(1)
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者 需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集 合)进行比较。...原创 2022-08-28 08:45:57 · 276 阅读 · 3 评论 -
存储过程与函数
含义:存储过程的英文是 Stored Procedure。它的思想很简单,就是一组经过 预先编译 的 SQL 语句的封装。执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。好处:1、简化操作,提高了sql语句的重用性,减少了开发程序员的压力2、减少操作过程中的失误,提高效率3、减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)原创 2022-08-24 12:14:57 · 440 阅读 · 9 评论 -
MySQL触发器
在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息 和 库存信息 分 别存放在 2 个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时 在库存表中添加一条库存记录。这样一来,我们就必须把这两个关联的操作步骤写到程序里面,而且要用 事务 包裹起来,确保这两个操 作成为一个 原子操作 ,要么全部执行,要么全部不执行。要是遇到特殊情况,可能还需要对数据进行手 动维护,这样就很 容易忘记其中的一步 ,导致数据缺失。这个时候,咱们可以使用触发器。原创 2022-08-23 18:49:06 · 668 阅读 · 18 评论 -
MySQL8.0理解数据库配置问题(spring)
出现的问题大多是版本的问题,在8.0中加入了时区的玩意而且驱动也发生的一些变动 public DruidDataSource getDruidDataSource() { //数据库连接池 DruidDataSource druidDataSource=new DruidDataSource(); druidDataSource.setDriverClassName("com.mysql.原创 2022-05-01 16:53:33 · 1666 阅读 · 0 评论 -
书城项目总结
俩天利用空闲时间把书城项目的第二个阶段给弄了,过程很曲折,但最后还是搞好了,尽管看上去有点破碎,但总归是好的,下面利用外卖没到的时间总结一波,纪念下第一次搞这么大的项目!!!首先是总体框架的:搭建书城项目开发环境第二个阶段只要是和数据库建立连接来判断用户注册登录的合法性!首先是用户类的创建:接着是数据库的连接,在进行之前我首先进行了book 数据库的创建,接着建立一张表,来放用户的数据,即id username passwor email 这些,创建的时候把id作..原创 2022-04-16 13:09:46 · 1456 阅读 · 0 评论 -
MySQL视图详接
MySQL视图详接原创 2022-04-15 07:59:58 · 921 阅读 · 0 评论 -
MySQL约束详接
为什么需要约束?数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑:什么是约束约束是表级的强制规定。可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定约束。约束的.原创 2022-04-14 23:44:56 · 575 阅读 · 0 评论 -
mysql表中数据的增删改
MySQL实现对表数据的增删改,深入浅出原创 2022-04-13 07:38:17 · 305 阅读 · 1 评论 -
MySQL数据库的创建(表的创建,列,表的增删改,深入浅出)
数据的基础必备知识,包括表的创建,表的整体管理,增删改,深入浅出原创 2022-04-12 07:49:28 · 2540 阅读 · 0 评论 -
mysql聚合函数(含MySQL语句执行原理讲解)
mysql聚合函数(含MySQL语句执行原理讲解)原创 2022-04-11 07:41:56 · 464 阅读 · 0 评论 -
mysql多表查询(一口气解决掉:自连接 左右连接 满连接等)
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。一个错误#案例:查询员工的姓名及其部门名称SELECT last_name, department_nameFROM employees, departments;这是多表查询菜鸟经常犯的错误和误解的地方,如果employees有3条数据,原创 2022-04-10 08:05:13 · 733 阅读 · 0 评论 -
MySQL排序和分页(浅入浅出)
MySQL中的排序和分页原创 2022-04-09 07:10:47 · 257 阅读 · 0 评论 -
mysql(深入浅出运算符)
mysql运算符详解,看完等于敲完,超详细,含+ - * % / , 逻辑运算符,你踩的坑我帮你踩原创 2022-04-07 07:51:07 · 264 阅读 · 0 评论 -
jdbs学习中的错误总结1(MySql Lock wait timeout exceeded)
MySql Lock wait timeout exceeded错误的解决方法原创 2022-04-05 17:46:52 · 688 阅读 · 0 评论 -
mysql(基本的SELECT语句)
基本的SELECT语句:包含条件选择,去除重复,查看表结构,有手就行!!原创 2022-04-04 12:50:29 · 2919 阅读 · 1 评论 -
mysql(入门基础了解部分,数据库的基本概念)
mysql(入门基础了解部分,数据库的基本概念)原创 2022-04-04 12:02:13 · 752 阅读 · 1 评论