- 浏览: 599349 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
在mysql的多个存储引擎中,innodb支持外键,但是由于外键,也会对innodb表增加锁定机制;
所有的外键相关的操作都在数据更改时,比如检查数据完整性、增加锁定等;
假设一个表为test_tab,一个表为child,test_tab通过id和child的test_tab_id相连接;在一个session中set autocommit=0,执行对test_tab或child的操作,在另一个
session执行对child或test_tab的操作,从而得出以下结论:
一、对父表的操作
1:insert to test_tab,新插入行的id值为XXX
child会锁外键值为XXX的行,不会锁其他行
2:update test_tab,原id为XXX,现id为YYY
child会锁外键值为XXX,YYY的行,不会锁其他行
3:delete from test_tab,删除行的id为XXX
child会锁外键值为XXX,不会锁其他行
二、对子表的操作
1:insert to child,插入行的外键值为XXX
test_tab会锁值XXX的行,不会锁其他行
2:update child,更新行的外键值原为XXX,现为YYY
test_tab会锁XXX,YYY行,但要注意:存在间隔锁,也会锁其他行(XXX,YYY之间的位置)
3:delete from child,删除行的外键值为XXX
test_tab会锁XXX的行,但要注意:存在间隔锁,也会锁其他行(XXX-1的位置)
所有的外键相关的操作都在数据更改时,比如检查数据完整性、增加锁定等;
假设一个表为test_tab,一个表为child,test_tab通过id和child的test_tab_id相连接;在一个session中set autocommit=0,执行对test_tab或child的操作,在另一个
session执行对child或test_tab的操作,从而得出以下结论:
一、对父表的操作
1:insert to test_tab,新插入行的id值为XXX
child会锁外键值为XXX的行,不会锁其他行
2:update test_tab,原id为XXX,现id为YYY
child会锁外键值为XXX,YYY的行,不会锁其他行
3:delete from test_tab,删除行的id为XXX
child会锁外键值为XXX,不会锁其他行
二、对子表的操作
1:insert to child,插入行的外键值为XXX
test_tab会锁值XXX的行,不会锁其他行
2:update child,更新行的外键值原为XXX,现为YYY
test_tab会锁XXX,YYY行,但要注意:存在间隔锁,也会锁其他行(XXX,YYY之间的位置)
3:delete from child,删除行的外键值为XXX
test_tab会锁XXX的行,但要注意:存在间隔锁,也会锁其他行(XXX-1的位置)
发表评论
文章已被作者锁定,不允许评论。
-
mysql 技术内幕学习
2018-10-22 12:42 609... -
mysql 全文索引(fulltext)学习
2018-10-15 11:09 551使用索引是数据库性能优化的必备技能之一。在MySQL数据库中, ... -
mysql cast和convert函数学习(将字符串转数字)
2018-08-03 11:12 1011MySQL 的CAST()和CONVERT()函数可用来获取一 ... -
mysql 常见函数总结
2014-11-06 19:41 735--获取当前的database se ... -
MySQL checksum了解
2014-11-05 19:51 512在主从复制中Checksum常常需要对某些重要的表进行一致性检 ... -
Mysql 常见命令总结
2014-11-04 20:01 3461.linux下启动mysql的命令: mysqladm ... -
MySql 数据库的创建和查看
2014-11-04 19:51 386使用SHOW语句找出在服务器上当前存在什么数据库 mys ... -
MySQL独立表空间VS共享表空间
2014-11-04 19:19 553在使用Innodb引擎时将要 ... -
mysql Multiversion Concurrency Control机制(mvcc)
2014-09-11 17:46 689在进行多事务 ... -
mysql 操作索引FORCE INDEX
2014-09-01 17:14 16961、创建索引 索引的创建可以在CREATE TABLE语句中 ... -
InnoDB Insert Buffer(插入缓冲)
2014-08-30 11:40 1135插入缓冲,并不是缓存的 ... -
mysql 存储过程例子
2014-08-28 11:36 544(1)循环遍历值 drop procedure if e ... -
MySQL if case语句使用总结
2014-08-26 19:47 565Mysql的if既可以作为表达式用,也可在存储过程中作为流程控 ... -
mysql 事务隔离级别
2014-08-25 12:00 669用户可以用SET TRANSACTION语句改变单个会话或者所 ... -
mysql cpu占100%调优案例
2014-08-23 21:44 502解决 MYSQL CPU 占用 100% 的经验总结 ... -
mysql cursor使用
2014-08-22 20:24 862一,什么是游标(cursor) 个人觉得就是一个cursor, ... -
mysql 查看表数据量
2014-08-22 16:55 484数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不 ... -
mysql mysqldump导入导出
2014-08-22 16:32 1040我们来看几个常用用例: (1)导出整个数据库 mysqld ... -
mysql DATE_FORMAT() 函数
2014-08-22 16:23 459定义和用法 DATE_FORMAT() 函数用于以不同的格式显 ... -
MySQL性能调优 - Table_cache(table_open_cache)
2014-08-14 16:12 0table_cache是一个非常重 ...
相关推荐
InnoDB 是 MySQL 中的一种存储引擎,它支持事务、行级锁、外键约束等功能。InnoDB 存储引擎是 MySQL 中的默认存储引擎,它提供了高性能和高可靠性的存储服务。 外键约束的好处 ------------- 外键约束可以确保数据...
只有 InnoDB 引擎才允许使用外键,这是因为 InnoDB 引擎支持事务和锁机制,能够确保数据的一致性和完整性。 在创建外键时,要求父表必须有对应的索引,子表在创建外键时也会自动创建对应的索引。在创建索引时,可以...
5. 锁机制:MySQL中的锁机制包括表级锁、行级锁、页级锁等,通过源码可以深入理解这些锁的实现细节和应用场景。 6. Replication(复制):MySQL的主从复制功能允许数据在多个服务器之间同步,源码中可以研究如何...
作为一名 IT 行业大师,我将从存储引擎、锁机制、事务等方面详细剖析 MySQL 的知识点,并总结出大厂面试题的要点。 一、存储引擎 MySQL 提供了多种存储引擎,包括 MyISAM、InnoDB、MEMORY 等。其中,MyISAM 和 ...
这本书深入解析了InnoDB的工作原理,包括表空间、页、索引结构、锁机制、事务处理和恢复机制等。通过阅读这本书,读者可以更好地理解InnoDB在处理并发操作和保证数据一致性方面的机制,从而更有效地设计和管理数据库...
通过上述对 MySQL 高级优化查询的深入解析,我们不仅了解了查询缓存的原理及其工作流程,还探讨了 MySQL 的内部机制,包括存储引擎、锁机制、索引管理和查询优化器等关键组件。此外,还介绍了一些额外的优化策略,如...
其内容主要包括:MySQL的基本架构与存储引擎、表的设计与操作、索引的使用、查询的执行优化、事务与锁机制、性能调优、复制和高可用架构等方面。 具体知识点分析如下: 1. MySQL存储引擎:文件内容提到了使用...
MySQL锁机制是指MySQL数据库系统中的一种机制,用于控制并发访问的数据的一致性。MySQL锁机制有两种:表锁和行锁。表锁是指对整个表的锁定,而行锁是指对单个记录的锁定。在MySQL中,锁机制可以通过LOCK TABLE和...
3. **锁机制**:熟悉不同的锁定级别(如读锁、写锁)及其对并发控制的影响。 ### 五、视图与存储过程 1. **视图的创建与使用**:了解视图的作用及其创建和使用方法。 2. **存储过程的编写**:掌握存储过程的语法...
此外,还有锁机制,如行级锁、表级锁、读写锁等。 5. **内存管理**:MySQL使用缓冲池来缓存数据和索引,以减少磁盘I/O。优化内存管理对提高性能至关重要。 6. **复制与高可用**:MySQL的复制功能使得数据可以在多...
4. **并发控制与锁机制**:分析MySQL的并发控制机制,如多版本并发控制(MVCC)、行级锁定、表锁定等,以及它们在不同隔离级别下的表现。 5. **存储与恢复机制**:讲解数据的物理存储格式,如记录格式、页管理,...
面试中,MySQL的知识点涵盖了从基础到高级的各种主题,包括但不限于数据库引擎的选择、事务处理、锁机制、索引优化、存储结构以及数据恢复策略等。以下是对这些重要知识点的详细解释: 1. **MySQL常用引擎**: - *...
在深入分析MySQL加锁处理之前,首先需要了解MySQL数据库的基本架构以及锁机制的相关概念。MySQL是一个支持插件式存储引擎的数据库系统,其中InnoDB存储引擎因其支持事务处理和外键约束而被广泛使用。本文将重点讨论...
MySQL OCP 5.6答案最新修正版题库 ...本资源旨在帮助用户更好地理解 MySQL 的高可用性、存储引擎、性能优化、查询优化、信息模式、锁机制、 MySQL 配置等知识点,为 MySQL OCP 5.6 认证考试做好准备。
- **数据恢复机制**:增强了崩溃恢复机制,即使在系统故障的情况下也能保证数据的一致性和完整性。 ### MySQL 5.6的安装步骤 #### Windows平台安装MySQL 5.6 1. **下载安装包**:首先从MySQL官方网站或可靠的第三...
本文档将对 MySQL 的一些常见面试题进行详解,涵盖 MySQL 的锁机制、表格类型、存储引擎、事务隔离级别、数据类型、索引、时间戳等方面。 MySQL 锁机制 MySQL 中有三种锁机制:表级锁、行级锁和页面锁。表级锁开销...
事务的四种隔离级别(读未提交、读已提交、可重复读、串行化)和锁机制(共享锁、排他锁、行级锁、表级锁)是解决并发问题的关键。 存储引擎是MySQL的另一大特色,InnoDB是默认且最常用的存储引擎,支持事务处理和...