MySQL分页Limit优化
众所周知,MySQL为分页查询提供了一个非常好的方式:LIMIT,然而,在实际开发中,当数据量达到一定的量级(例如千万量级)的时候,单纯使用LIMIT语句查询,查询后面的数据的时候,耗时会增加,这个时候就需要对SQL进行一定的优化,或者说,在开发的过程中,应当避免直接使用LIMIT语句。做个小实验在开始前,我们先做一个小实验,首先准备一张千万量级的数据表,我这里简单准备了一张表,同时添加了一...
众所周知,MySQL为分页查询提供了一个非常好的方式:LIMIT,然而,在实际开发中,当数据量达到一定的量级(例如千万量级)的时候,单纯使用LIMIT语句查询,查询后面的数据的时候,耗时会增加,这个时候就需要对SQL进行一定的优化,或者说,在开发的过程中,应当避免直接使用LIMIT语句。做个小实验在开始前,我们先做一个小实验,首先准备一张千万量级的数据表,我这里简单准备了一张表,同时添加了一...
脏读脏读,是指在不同的事务下,当前事务可以读到其他事物未提交的数据,即读到脏数据。举个简单的例子,事务A对数据 num进行了更新,使其从1变为2,随后,事务B读取了 num,读取到的值为2,由于某种原因,事务A回滚了当前事务,此时,事务B读到的,就是事务A没有提交的数据,这就是脏读。事务A事务B结果SELECT t.num FROM t WHERE t.id = 1 1BEGIN UPDA...
Qmgo由于 mgo这个库已经停止维护多年了,对新的特性支持较少,而 MongoDB driver又不怎么好用,所以我发现了七牛云开源的 Qmgo。Qmgo 是一款 Go语言的 MongoDB driver,它基于MongoDB 官方 driver 开发实现,同时使用更易用的接口设计,比如参考mgo (比如 mgo的链式调用)。Qmgo让您以更优雅的姿势使用MongoDB的新特性。Qmgo是...
对于使用Redis作为数据库的缓存,我们一般会有以下流程查询缓存是否存在数据若存在数据则返回,若不存在数据,查询数据并更新缓存后返回对应如下流程图:这种流程分别可能这几种问题问题:缓存击穿、缓存穿透、缓存雪崩因此,本文分别探讨这几种问题并给出部分的解决方案,这也是经典的面试题了,在这里稍做记录。缓存击穿简介缓存击穿,是指在某个时间点同时访问一个已经过期的key时,因为某些原因,比如复杂SQL...
最近在做学校的数据库作业,因为课本是用SQL Server实现的,而我是用MySQL,所以出现了一些问题,比如在SQL Server中,获取前百分之几的数据,只需要 top xxx percent即可,而在MySQL中,如果要获取前xxx条数据,则要用 limit xxx ,神奇的地方来了,limit并不支持动态参数,这就很麻烦了,这个问题比较有意思,所以我在此记录下。这里主要有两个方法:...