随笔分类 -  MySQL

摘要:create temporary table temp_t like t1; alter table temp_t add index(b); insert into temp_t select * from t2 where b>=1 and b<=2000; select * from t1 j 阅读全文
posted @ 2021-06-10 12:21 hochan_100 阅读(207) 评论(0) 推荐(0)
摘要:实验环境 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`) ) ENGINE=InnoDB; 阅读全文
posted @ 2021-06-09 10:36 hochan_100 阅读(63) 评论(0) 推荐(0)
摘要:如何给字符串字段建立合适的索引? MySQL支持前缀索引,前缀索引是指可以取原索引的前多少个字节作为一个新的索引,而取前多少个字节取决于你数据的情况,前缀索引的优势在于占用空间会更小。而坏处在于使用前缀索引会导致查询语句读数据的次数变多。 前缀索引的长度如何定义? 对于前缀索引,定义好长度,就可以做 阅读全文
posted @ 2021-06-06 15:53 hochan_100 阅读(30) 评论(0) 推荐(0)
摘要:唯一索引和普通索引,如何选型? 部分转载于 https://time.geekbang.org/column/article/70848 对于同一笔类似的查询操作,使用唯一索引和普通索引的性能差距,微乎其微! 而对于同一笔类似的更新操作,首先说一下mysql是如何完成这个数据页更新的。当更新一个数据 阅读全文
posted @ 2021-06-06 15:50 hochan_100 阅读(22) 评论(0) 推荐(0)
摘要:丁奇《Mysql实战45讲》 理解 在RR隔离级别下,我们说过事务开启后会创建一个视图read-view,之后事务执行期间,即使有其他事务修改了数据,并不影响我们见到的,因为我们看的是这个read-view。 但是,如果当我们要更新一行的数据时,恰好这行被另外一个事务锁住,我们进入等待队列,当这个事 阅读全文
posted @ 2021-06-06 15:48 hochan_100 阅读(23) 评论(0) 推荐(0)
摘要:幻读现象 幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。 (仅在“当前读”的情况下才会出现) 幻读会带来什么问题? 1.语义上,破坏了锁声明,明明锁住?为什么可以修改我锁住的所有满足条件行, 2.数据一致性 如何解决幻读? 锁上所有扫描到的行?事实证明这样 阅读全文
posted @ 2021-06-06 15:46 hochan_100 阅读(19) 评论(0) 推荐(0)
摘要:按照锁影响范围可分为全局锁,表级锁,行级锁 全局锁:该锁会对整个数据库实例锁上,MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock ,使用这个命令之后,其他线程的以下语句会被阻塞:DDL,DML;它的典型应用场景是做全量的数据库逻辑备份;但是,让整个库 阅读全文
posted @ 2021-06-06 15:43 hochan_100 阅读(22) 评论(0) 推荐(0)