
mysql
FuYouJ
这个作者很懒,什么都没留下…
展开
-
MySQL笔记(10)MySQL优化器选错索引
不知道你有没有碰到过这种情况,一条本来可以执行得很快的语句,却由于 MySQL 选错了索引,而导致执行速度变得很慢?我们先建一个简单的表,表里有 a、b 两个字段,并分别建上索引:CREATE TABLE `t` (`id` int(11) NOT NULL,`a` int(11) DEFAULT NULL,`b` int(11) DEFAULT NULL,PRIMARY KEY (`...原创 2020-03-14 22:37:22 · 393 阅读 · 0 评论 -
MySQL笔记(9)普通索引和唯一索引
文章来源:极客时间MySQL实战45讲 评论区更精彩,有能力去支持哈假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的 SQL 语句:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';所以,你一定会考虑在 i...原创 2020-03-14 10:55:38 · 595 阅读 · 2 评论 -
MySQL笔记(8)多事务的隔离性
在事务隔离:为什么你改了我还看不见?和你讲事务隔离级别的时候提到过,如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,这个事务看到的仍然跟在启动时看到的一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。但是,怎么减少行锁对性能的影响?,和你分享行锁的时候又提到,一个事务如果要更新一行,而...原创 2020-03-14 10:26:18 · 378 阅读 · 0 评论 -
MySQL笔记(4)深入浅出索引(上)
一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。索引的常见模型索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,所以这里也就引入了索引模型的概念。可以用于提高读写效率的数据结构很多,这里我先给你介绍三种常...原创 2020-03-14 09:33:33 · 443 阅读 · 0 评论 -
MySQL笔记(7)怎么减少行锁对性能的影响?
顾名思义,行锁就是针对数据表中行记录的锁。这很好理解,比如事务 A 更新了一行,而这时候事务 B 也要更新同一行,则必须等事务 A 的操作完成后才能进行更新。当然,数据库中还有一些没那么一目了然的概念和设计,这些概念如果理解和使用不当,容易导致程序出现非预期行为,比如两阶段锁。从两阶段锁说起你举个例子。在下面的操作序列中,事务 B 的 update 语句执行时会是什么现象呢?假设字段 id ...原创 2020-03-14 09:32:07 · 438 阅读 · 0 评论 -
MySQL笔记(6)全局锁和表锁
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是Flush tables with read lock (FTWRL)。当...原创 2020-03-14 09:07:41 · 346 阅读 · 0 评论 -
MySQL笔记(5)深入浅出索引(下)
在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0, s varchar(16) NOT NULL DEFAULT '',index k(k))...转载 2020-03-13 23:26:10 · 357 阅读 · 0 评论 -
MySQL笔记(3)事务隔离:为什么你改了我还看不见?
我将会以 InnoDB 为例,剖析 MySQL 在事务支持方面的特定实现,并基于原理给出相应的实践建议,希望这些案例能加深你对 MySQL 事务原理的理解。隔离性与隔离级别提到事务,你肯定会想到 ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性),今天我们就来说说其中 I,也就是“隔离性”。当数据库上有多个...原创 2020-03-13 21:48:21 · 1596 阅读 · 0 评论 -
MySQL笔记(1)一条SQL查询语句是如何执行的?
因为自我感觉基础不太好,所以暂时回头进攻基础知识。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时:select * from T where ID = 10;我们看到的只是输入一条...转载 2020-03-13 20:27:24 · 522 阅读 · 0 评论 -
MySQL笔记(2)日志系统:一条SQL更新语句是如何执行的?
rt原创 2020-03-13 20:26:03 · 334 阅读 · 1 评论 -
求连续出现的数字
title: 求连续出现的数字date: 2019-10-07 14:11:04tags:- MySql- LeetCode求连续出现的数字编写一个 SQL 查询,查找所有至少连续出现三次的数字。例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。分析:题目的难点在于要连续出现的数字,想到了记录主键的递增,其实这是不保险的,有可能某一行被认为的删除。参考了别...原创 2019-10-07 14:35:49 · 482 阅读 · 0 评论 -
手动Rank求排名
title: 手动Rank求排名date: 2019-09-27 12:52:07tags:- mySql- leetCode分数排名题目:编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”(中等难度)例如,根据上述给定的 Scores 表,你的查询应该...原创 2019-10-07 13:39:28 · 295 阅读 · 0 评论