高性能MySQL学习笔记(一)——基础

本文详细介绍了MySQL的逻辑架构,包括读写锁、表锁等概念,同时深入探讨了事务的隔离级别,如未提交读、提交读、可重复读及可串行化,以及常见的事务问题如脏读、不可重复读、幻像读和死锁。此外,还提供了实用的数据导入与导出的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于MySQL我实在是熟得不能再熟了,基本上普通的使用完全没有问题,不管是原生的,使用tp5或者laravel框架的使用,都已经很多很多次了,但是我依然觉得我还差点儿火候,刚才在公司书架上发现了这本《高性能MySQL》,总觉得学完我的技术能更上一层楼。

1 MySQL逻辑架构

   (1)读写锁:读锁是共享的,写锁是排他的;即一个写锁会阻塞其他的写锁和读锁;

   (2)表锁:表锁是MySQL中最基本的锁策略,并且是开销最小的策略。

                       行级锁可以最大程度地支持并发处理,同时也带来了最大的锁开销,行级锁只在存储引擎中层实现

2 事物

   事物是MySQL中必学的东西,其实是很简单的概念,此处略过所有我知道的东西。

  (1)隔离级别:四种隔离级别分别是READ UNCOMMITTED(未提交读),READ COMMITTED(提交读),REPEATABLE READ(可重复读)和SERIALIZABLE(可串行化);      

        脏读 (dirty read)事务T1更新了一行记录的内容,但是并没有提交所做的修改。事务T2读取更新后的行,然后T1执行回滚操作,取消了刚才所做的修改。现在T2所读取的行就无效了。

        不可重复读取 (nonrepeatable read)事务T1读取一行记录,紧接着事务T2修改 了T1刚才读取的那一行记录。然后T1又再次读取这行记录,发现与刚才读取的结果不同。这就称为“不可重复”读,因为T1原来读取的那行记录已经发生了变化。

      幻像读取 (phantom read)事务T1读取一条指定的WHERE子句所返回的结果集。然后事务T2新插入 一行记录,这行记录恰好可以满足T1所使用的查询条件中的WHERE 子句的条件。然后T1又使用相同的查询再次对表进行检索,但是此时却看到了事务T2刚才插入的新行。这个新行就称为“幻像”,因为对T1来说这一行就像突 然出现的一样。

(2) 死锁:死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。

(3)导入与导出:创建一个类似的表:CREATE TABLE test2 LIKE test1;

                               修改表引擎:ALTER TABLE test2 ENGINE=InnoDB;

                               加入数据:INSERT INTO test2 SELECT * FROM test1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值