首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库 mysql 开始

在缓存方面的我们有了 redis 这样的 nosql 数据库,而 mongodb 在业务等级和 mysql 基本是平级的,当然使用程度上说,mysql 这样关系型数据库统计地位确实根深蒂固的。...而大数据领域有列式数据库 HBase ,另外数据关系领域在一对多领域衍生出来某个对象需要的对象关系跟自己平级,那就出现了图数据库,目前主流图数据库还是 neo4j。...回到 mysql ,关于他的讲述,如今各种视频资料已经漫天遍野,本人自然无法聊出更多所以就根据其常见的机制简单介绍。索引几乎聊到数据库,索引是必然会聊到的,主键索引和唯一索引是开发必须考虑的。...主从复制中有 relay logmysql 的所有信息复制在 binlog 中,如果节点需要复制主节点信息,需要读取主节点的 binlog 写入到 relay log,然后在从 relay...大家可能会好奇为什么还多加一个 relay log ,这是开发中默认的一个想法,网络是不可靠的,同时数据之间需要缓冲,如果节点,读取后直接同步,那么网络出错了,可能会产生错误数据,万一有请求来了,我一遍同步一遍接受请求压力山大呀

9510
您找到你想要的搜索结果了吗?
是的
没有找到

mysql、幻、不可重复读

:有个英雄表如下图所示图片第一天 小张 往里面插入数据:BEGIN;INSERT INTO heros_temp values(4, '吕布');小张还没有提交事务的时候,小李对数据表进行了访问,小张看到的结果如下图片小李读到了小张还没有提交的数据...,我们称之为“脏”不可重复读小张想查看 id=1 的英雄是谁,于是他进行了 SQL 查询:SELECT name FROM heros_temp WHERE id = 1;图片然而此时,小李开始了一个事务操作...幻小张想要看下数据表里都有哪些英雄图片这时当小张执行完之后,小李又开始了一个事务,往数据库里插入一个新的英雄“吕布”BEGIN;INSERT INTO heros_temp values(4, '吕布...这种异常情况我们称之为“幻”。总结脏:读到了其他事务还没有提交的数据。不可重复读:对某数据进行读取,发现两次读取的结果不同,也就是说没有读到相同的内容。...幻:事务 A 根据条件查询得到了 N 条数据,但此时事务 B 更改或者增加了 M 条符合事务 A 查询条件的数据,这样当事务 A 再次进行查询的时候发现会有 N+M 条数据,产生了幻

80150

MySQLMySQL事务的问题:脏、幻、不可重复读

MySQL事务的问题:脏、幻、不可重复读 在上一篇文章中,我们已经学习过了事务相关的基础知识,今天,我们继续学习事务有可能带来的一些问题。...-- my.cnf [server] transaction-isolation = READ-UNCOMMITTED 脏的意思就是两个事务同时在运行,其中 A 事务修改了某个字段,B 事务读取了这个字段...很明显,这就产生了问题,这个就是脏带来的结果,一致性出现了问题。 不可重复读 不可重复读是啥意思呢?...; +----------+ | username | +----------+ | aaa | +----------+ 1 row in set (0.00 sec) 幻 最后一个幻...确实,它们非常类似,但是,幻更强调的是聚合操作结果,而不是单一一条数据的修改,这就是它们两个之间最本质的区别。

10410

MySQL事务(脏、不可重复读、幻)

数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元); 2.事务的四大特性ACID...数据库管理系统通常使用锁来实现这个特征。 持久性(DURABILITY):   一个被完成的事务的效果应该是持久的。...、INSERT等DQL及DML语句的执行,mysql会自动提交该事务,如果关闭就需要手动提交或者回滚来完成操作。...脏的情况:对于两个事务T1与T2,T1读取了已经被T2更新但是还没有提交的字段之后,若此时T2回滚,T1读取的内容就是临时并且无效的   开启两个mysql客户端,并创建一张测试表transaction...幻: 对于两个事务T1、T2,T1表中读取数据,然后T2进行了INSERT操作并提交,当T1'再次读取的时候,结果不一致的情况发生。 5.

1.1K10

MySQL删库到跑路(一)——MySQL数据库简介

MySQL是一个关系型数据库管理系统,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。...   H、提供用于管理、检查、优化数据库操作的管理工具    I、可以处理拥有上千万条记录的大型数据库 3、MySQL应用 与大型数据库例如Oracle、DB2、SQL Server等相比,MySQL...4、MySQL管理 可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query...MyISAM是早期ISAM(Indexed Sequential Access Method)的扩展实现,ISAM被设计为适合处理频率远大于写频率的情况,因此ISAM以及后来的MyISAM都没有考虑对事物的支持...MySQL Workbench(GUITOOL)一款专为MySQL设计的ER/数据库建模工具,是著名的数据库设计工具DBDesigner4的继任者。

2K20

Mysql、幻、不可重复读(二)

Mysql、幻、不可重复读引言在数据库领域中,脏、幻和不可重复读是常见的问题,特别是在并发操作的环境下。本文将详细介绍这三个问题的定义、原因以及如何通过Mysql来解决它们。1....脏(Dirty Read)脏指的是一个事务读取到了另一个事务未提交的数据。当一个事务修改数据但还没有提交时,另一个事务读取到了这个未提交的数据,并做出了相应的操作。...事务2在事务1未提交的情况下读取到了这条记录,导致脏的问题。2....幻(Phantom Read)幻指的是一个事务在读取某个范围内的记录时,另一个事务在该范围内插入了新的记录,导致第一个事务再次读取到了该范围内的新记录,就像幻觉一样。...在事务中使用锁定(SELECT ... FOR UPDATE)来锁定读取的数据,保证事务期间数据的一致性。在设计数据库时,合理规划表结构和索引,减少不可重复读的可能性

17100

MYSQL 数据库归档 到 归档设计

我见到过的,听到过的数据库归档的方法有以下几种 1 数据通过人工的手段来进行清理,直接将表换名字,然后在重建一个新的表,承接数据。...2 数据通过MYSQL dump 或者其他的备份方式,将数据备份出来,在将数据恢复到数据归档库中,然后将备份的数据直接手动清理掉,这样的做法速度也很快,对业务的影响也比较小,基本上可以算是透明的方式了...下面就是一个MYSQL 针对一个数据库表归档的案例(这个案例也是有缺陷的,但目前是秉承着够用就好,以及时间成本的原则) 首先设计一个归档要考虑的问题如下 1 归档表的大小,以及每日最大,或最小的归档数据量...以下以最简单的自动化的方案来讲 下图是基于案例来讲的 因为数据库MYSQL 所以考虑了归档一次是多大的批量,避免归档数据量过大的时候将生产库hang 死,另外配置表主要的功能是有两个 1 限制一次拷贝和清理的数据量...declare save_month tinyint; #保留多少月之前的数据 declare times int; #执行次数记录 declare min_row_s int; # 当前数据库最小的

4.9K41

MySQL的脏、幻、不可重复度是什么

什么是脏又称为无效数据读取,指在数据库访问中,事务T1修改了某个数值,随后事务T2读取了该数值,而后因某种原因,T1撤销了对该数值的修改,导致T2读取到的数据变为无效。...具体而言,脏是指一个事务正在访问数据并对其进行修改,但这些修改尚未提交到数据库中。此时,另一个事务也访问该数据,并使用了它。...一般解决幻的方法是通过增加范围锁(RangeS),将检测锁的范围限定为只读,这样便可以避免幻的发生。...值得注意的是,幻是不可重复读的一种特殊情况:在事务没有获取范围锁的情况下执行SELECT … WHERE操作时可能会导致幻现象的发生。...什么是不可重复读不可重复读是指在数据库访问中,一个事务内进行两次相同的查询却返回了不同的数据。这种现象是由于系统中其他事务的提交修改所引起的。

16910

MySQL的脏、幻、不可重复度是什么

什么是脏又称为无效数据读取,指在数据库访问中,事务T1修改了某个数值,随后事务T2读取了该数值,而后因某种原因,T1撤销了对该数值的修改,导致T2读取到的数据变为无效。...具体而言,脏是指一个事务正在访问数据并对其进行修改,但这些修改尚未提交到数据库中。此时,另一个事务也访问该数据,并使用了它。...一般解决幻的方法是通过增加范围锁(RangeS),将检测锁的范围限定为只读,这样便可以避免幻的发生。...值得注意的是,幻是不可重复读的一种特殊情况:在事务没有获取范围锁的情况下执行SELECT … WHERE操作时可能会导致幻现象的发生。...什么是不可重复读不可重复读是指在数据库访问中,一个事务内进行两次相同的查询却返回了不同的数据。这种现象是由于系统中其他事务的提交修改所引起的。

10110

Mysql如何解决

也是在面试中经常被问到的,今天我们按照下面几个方面讲解 幻是什么 幻有什么问题 如何解决幻 首先我们建立我们的表,且插入6条数据,如下图 CREATE TABLE `t` ( `id` int...sessionC插入id=1这行数据,Q3返回id=0,1,5 这里Q3读到id=1这行数据就是幻,幻是指在一次事务中,前后两次相同的范围查询,看到了不一样的数据。...在可重复读级别下,普通查询是读取快照读,不可以看到其他事物中的插入的数据,只有当前,才会有幻 上面的Q2不是幻,他是当前,幻是针对新插入行 幻有什么问题 破坏语义 sessionA中T1select...next-lock key 的引入虽然解决了幻的问题,但是也引来了一些问题 如下图执行结果,就可能引起死锁 ?...,答案是有的,Mysql默认的事物隔离级别是可重复读,但是如何我们把事物设置成已提交和binlog_format=row,也是可以解决幻的问题,当然要这样配置是否合理要看你们的业务场景.

97720

MySQL如何解决幻

关于当前可以见MySQL MVCC(多版本控制)这篇文章。...在可重复隔离级别下,普通的查询是快照读,是无法看到别的事务插入的数据的,只有当前才会出现幻。 幻有什么问题? 语义上带来了破坏。...where id=1; /*(1,5,5)*/ update t set d=100 where d=5;/*所有d=5的行,d改成100*/ 这个binlog如果被拿到备库执行或者用来克隆一个数据库...如何解决幻? 产生幻的原因就是行锁只能锁住行,插入动作更新的是记录之间的间隙。因此为了解决幻问题,InnoDB引入了间隙锁。 什么是间隙锁?...(0, 5) (5, 10) (10, 15) (15, 20) (20, 25) (25, +∞) 当我们在执行select * from t where d=5 for update的时候,除了给数据库已有的行加行锁以外

45630

带你 MySQL 源码:limit, offset

我一直想写 MySQL 源码分析文章,希望能够达成 2 个目标: 不想研究源码的朋友,可以通过文章了解 MySQL 常用功能的实现逻辑,做到知其然,也知其所以然。...想研究源码的朋友,能够以文章为切入点,迈进 MySQL 源码研究之门。 目标是明确的,任务是艰巨的。 MySQL 源码数量庞大,各种功能的代码盘根错节,相互交织在一起,形成一张复杂的网。...对 MySQL 源码感兴趣的朋友们,如果想看到源码分析系列的更多文章,请帮忙把文章传播出去,分享给更多人。...本文内容基于 MySQL 8.0.32 源码。 正文 1....源码分析 TableScanIterator 迭代器用于存储引擎读取记录,留到以后的文章介绍。

89630
领券