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

从库mysqldump过程中主库做DDL怎样

开始分析之前,我们先了解下mysqldump这个工具,我们知道,mysqldump是官方自带的逻辑备份工具,可以将数据中的记录备份成一个可执行的sql文件。...而由于MySQL中支持MVCC多版本控制协议,可以确保你在导出数据的过程中,其他DML语句是可以正常更新进中的。 2、该参数避免了复制过程中的操作。...如果是MyISAM这种不支持事务的存储引擎,那么在备份的时候只能。...),此时正在进行select * from table_1操作,mysqldump占用着table_1的元数据,也就是MDL,binlog会被阻塞,发生主从延迟 4、如果在步骤6之后开始,则MySQL...已经释放了table_1的元数据,那么不会对从库产生影响,mysqldump拿到的是DDL变更前的结构。

1.2K20

select......for update还是行?

select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观。 那么它加的是行还是,这就要看是不是用了索引/主键。...没用索引/主键的话就是,否则就是是行。...0代手动提交,1代自动提交。 实例1: 使用主键id为条件去查询,然后开启另一个事务去更新数据,更新被阻塞,加锁了,锁定要查询的id为1的行数据。...实例4: 使用普通的字段code去操作 另一个事务我去更新另外一条数据,如果我更新成功了,就是行,失败了就是。...结果: 如果查询条件用了索引/主键,那么select ..... for update就会进行行。 如果是普通字段(没有索引/主键),那么select ..... for update就会进行

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

    小白学习MySQL - 查询

    问题来了,Oracle中执行的insert into select很正常,不会出现,难道相同的语句用在了MySQL,就会锁住整张?...,可以看到,有五个record lock,虽然我只从test_1读取一行数据,但实际上对test_1的所有记录都加了,而且显式对test_1加了一个IS的意向,因此这种操作,确实影响了select的并发执行...解决方案2:更改隔离级别 在创建索引前,之所以会出现的情况,和隔离级别是相关的,首先看下数据库的隔离级别。...,能看到test_2上是没有任何,因此不会出现RR锁定test_2的情况, mysql> show engine innodb status \G; ... ------------ TRANSACTIONS...而在RR模式,虽然两个事务做到了真正的隔离,但实际通过加锁,还是产生一些问题的,因此隔离级别的选择,其实还是一种权衡的。

    2.3K30

    技术分享 | MySQL中查询 ?

    前两天同事在微信群推了一篇文章,大概意思就是通过使用 insert into select 做了数据的备份,导致了 select 的锁住,进而影响了正常的使用。...问题来了,Oracle 中执行的 insert into select 很正常,不会出现,难道相同的语句用在了 MySQL ,就会锁住整张?...解决方案2:更改隔离级别 在创建索引前,之所以会出现的情况,和隔离级别是相关的,首先看下数据库的隔离级别。...,能看到 test_2 上是没有任何,因此不会出现 RR 锁定 test_2 的情况, mysql> show engine innodb status \G; ... ------------ TRANSACTIONS...而在 RR 模式,虽然两个事务做到了真正的隔离,但实际通过加锁,还是产生一些问题的,因此隔离级别的选择,其实还是一种权衡的。 ----

    5.5K10

    Innodb加索引,这个时候吗?

    以索引创建为例: image.png 从上文可见,当我们创建、删除或重命名索引时,采用“in place”的模式。...此外,如果 Online DDL 操作失败,其回滚操作可能造成较高的成本。长时间运行的 Online DDL 操作也可能导致主从同步的延迟。...对原加共享 MDL ,阻止对原的写操作,仅允许查询操作。 逐行将原数据拷贝到临时中,且无需进行排序。 数据拷贝完成后,将原升级为排他 MDL ,阻止对原的读写操作。...对原加共享 MDL ,阻止对原的写操作,只允许查询操作。 根据聚集索引的顺序,查询中的数据,并提取所需的索引列数据。将提取的索引数据进行排序,并插入到新的索引页中。...Execute 阶段: 降级 EXCLUSIVE-MDL 为 SHARED-MDL ,允许读写操作。 扫描原聚集索引的每一条记录。 遍历新的聚集索引和二级索引,逐一处理。

    41410

    面试官问:select......for update还是行?

    那么它加的是行还是,这就要看是不是用了索引/主键。 没用索引/主键的话就是,否则就是是行。...0代手动提交,1代自动提交。 结合一下实例验证 实例1: 使用主键id为条件去查询,然后开启另一个事务去更新数据,更新被阻塞,加锁了,锁定要查询的id为1的行数据。...实例2: 我们在开启一个事务对另一条id为2的数据进行更新, 实例3(索引): 一开始的创建就age创建了唯一索引。...实例4: 使用普通的字段code去操作 另一个事务我去更新另外一条数据,如果我更新成功了,就是行,失败了就是。...如果是普通字段(没有索引/主键),那么select ..... for update就会进行

    11K20

    从库mysqldump导致复制中断

    背景 环境 数据库版本:5.6.24-log 主从架构:一主两从搭配mha 操作步骤 1.开发要求truncate一张,在删除之前需要备份下数据; 2.在从库上使用mysqldump命令做逻辑备份...问题分析 首先,mysqldump 不加任何参数去执行,会对备份的。 这时候从库需要执行从主库同步过来的 update 语句,因为 mysqldump 的存在,该语句处理等待状态。...,此时从库的复制线程等待这条sql的应用,并处于 system lock 状态: 从库: [root@localhost][(none)]> show processlist; +----+---...总结 mysqldump 即使在从库中执行,也必须加上 --single-transcation 等参数,直接执行会上表,成本大大。...部分mysql工具,如 navicat 直接使用它自带的导出功能,也锁住全。所以尽量不要使用工具去处理导出工作。

    1.6K20

    mysqldump指定数据导出

    mysqldump指定数据导出 作者:matrix 被围观: 1,835 次 发布时间:2021-03-31 分类:mysql | 一条评论 » 这是一个创建于 518 天前的主题,其中的信息可能已经有所发展或是发生改变...平时习惯使用mysql客户端工具直接导出数据,这突然需要导出指定前缀的反而变得麻烦,因为非常多但又不想全部选择。 e.g....导出dict_开头的数据 查询符合条件的名 select table_name from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = 'heal'...-t heal -uroot --tables dict_union dict_tag > ~/db_script.sql -P端口号 -p密码 --tables 指定多个数据 报错 mysqldump...: Couldn't execute mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."

    3.7K20

    【MySQL】说透机制(二)行 加锁规则 之 范围查询(你知道吗?)

    本文按照 聚集集索->唯一索引->普通索引 的顺序 地毯式分析 范围查询中 、>= 的行情况,分析在唯一索引 章节,万字长文,力求分析全面,很硬核全网独一份,别忘了收藏!...从上锁的类型来说: 咱们上文曾说过,行默认的是Next-key Lock,可能降级为Gap Lock或Record Lock。...你是不是怀疑我搞错了?...范围组合 说明:索引失效 的规则是通用的,所以这里就 统一 只演示 不 的情况。...该索引 最大值 后面的 间隙; 如果没走唯一索引,那么就会把所有 聚集索引记录 和 间隙 都锁上,就是所谓的,或叫行. ---- 普通索引 说明:索引失效 的规则是通用的,所以这里就

    2K32

    MySQL中的、行

    如何加     MyISAM在执行查询语句(SELECT)前,自动给涉及的所有加读,在执行更新操作(UPDATE、DELETE、INSERT等)前,自动给涉及的加写,这个过程并不需要用户干预...这也正是MyISAM不太适合于有大量更新操作和查询操作应用的原因,因为,大量的更新操作造成查询操作很难获得读,从而可能永远阻塞。这种情况有时可能变得非常糟糕!...对于UPDATE、DELETE和INSERT语句,InnoDB自动给涉及及数据集加排他(X);对于普通SELECT语句,InnoDB自动给涉及数据集加排他(X);对于普通SELECT语句,InnoDB...很显然,在使用范围条件检索并锁定记录时,InnoDB这种加锁机制阻塞符合条件范围内键值的并发插入,这往往造成严重的等待。...隐含地提交事务;COMMIT或ROLLBACK产不能释放用LOCAK TABLES加的,必须用UNLOCK TABLES释放,正确的方式见如下语句。

    4.8K10

    并发 (三):myisam

    在之前我们讲到了并发下的重要性,以及在php中怎么实现文件 现在我们来讲讲关于mysql之间的:和行 MyISAM MyISAM 存储引擎只支持,这也是MySQL 开始几个版本中唯一支持的类型...模式 所谓,就是按为单位直接锁住整个 MySQL的有两种模式:共享读(Table Read Lock)和独占写(Table Write Lock)。...在前面的文章已经讲过了共享和独占,不多解释 如何加 MyISAM在执行查询语句(SELECT)前,自动给涉及的所有加读,在执行更新操作(UPDATE、DELETE、INSERT等)前,自动给涉及的加写...那么,一个进程请求某个 MyISAM的读,同时另一个进程也请求同一的写,MySQL如何处理呢?答案是写进程先获得。不仅如此,即使读请求先到等待队列,写请求后到,写插到读请求之前!...这也正是MyISAM不太适合于有大量更新操作和查询操作应用的原因,因为,大量的更新操作造成查询操作很难获得读,从而可能永远阻塞。这种情况有时可能变得非常糟糕!

    1.4K20

    MySQL行

    为了解决这个问题,MySQL引入了机制,其中最常见的是行。 行是MySQL中最细粒度的,它锁定了中的一行记录,允许其他事务访问中的其他行。...行适用于高并发的情况,因为它允许多个事务同时访问的不同行,从而提高了数据库的并发性能。 是MySQL中粗粒度的,它锁定了整个,阻止其他事务访问中的任何行。...适用于需要对整个进行操作的情况,但它会降低数据库的并发性能,因为只有一个事务可以访问。 行的使用 行可以通过在SQL语句中使用FOR UPDATE或FOR SHARE子句来实现。...不同的隔离级别影响行的行为,需要根据应用程序的需求进行选择。 的使用 是通过使用LOCK TABLES语句来实现的。...在解锁之前,其他事务无法访问。 需要注意的是,阻止其他事务访问相同的,因此在高并发环境中使用可能导致性能问题。

    32840

    MySQL中的、行

    如何加 MyISAM在执行查询语句(SELECT)前,自动给涉及的所有加读,在执行更新操作(UPDATE、DELETE、INSERT等)前,自动给涉及的加写,这个过程并不需要用户干预,因此用户一般不需要直接用...这也正是MyISAM不太适合于有大量更新操作和查询操作应用的原因,因为,大量的更新操作造成查询操作很难获得读,从而可能永远阻塞。这种情况有时可能变得非常糟糕!...对于UPDATE、DELETE和INSERT语句,InnoDB自动给涉及及数据集加排他(X);对于普通SELECT语句,InnoDB自动给涉及数据集加排他(X);对于普通SELECT语句,InnoDB...很显然,在使用范围条件检索并锁定记录时,InnoDB这种加锁机制阻塞符合条件范围内键值的并发插入,这往往造成严重的等待。...隐含地提交事务;COMMIT或ROLLBACK产不能释放用LOCAK TABLES加的,必须用UNLOCK TABLES释放,正确的方式见如下语句。

    5.1K20

    ⑩⑦【MySQL】:全局、行级

    设置全局: FLUSH TABLES WITH READ LOCK; MySQL数据备份: # MySQL数据库备份的 (命令行指令) mysqldump -uroot -p密码 备份数据库名>保存备份的文件名...# 实例: # mysqldump -uroot -p123456 mydb>mydb.sql 解除全局: UNLOCK TABLES; 3.... 分类: ①共享读(read lock) / 独享写(write lock) -- 设置 -- 设置了读read lock,当前客户端和其他客户端都只能读不能写。...写即阻塞其他客户端的读操作又阻塞其他客户端的写操作 元数据 ②元数据(meta data lock,MDL) : ⚪MDL加锁过程是系统自动控制 ,无需显式使用,在访问一张的时候自动加上。...索引上的范围查询(唯一索引),访问到不满足条件的第一个值为止。 间隙唯一目的是防止其他事务插入间隙 。间隙可以共存 ,一个事务采用的间隙不会阻止另一个事务在同一间隙上采用间隙

    38530
    领券