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

关于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;

你可能感兴趣的:(数据库)