分库分表分页查询:为什么你的查询又慢又耗费内存?
September 3, 2023
你们公司是怎么解决分页查询的?平均性能如何? # 我司业务是toB的,所以我们的分表主要有两种形式:按企业id分表、按时间分表。我们的做法是:让查询在单表中进行,避免跨表分页。 如果是按企业i ...
你们公司是怎么解决分页查询的?平均性能如何? # 我司业务是toB的,所以我们的分表主要有两种形式:按企业id分表、按时间分表。我们的做法是:让查询在单表中进行,避免跨表分页。 如果是按企业i ...
什么是MVCC?为什么需要MVCC? # MVCC即多版本并发控制,同一条记录可能存在多个版本,不同的事务可能读取到的是不同版本。 之所以使用MVCC,是为了提高并发读写性能。如果没有MVCC ...
什么是undo log?为什么需要undo log? # undo log,又称回滚日志。undo log有以下作用: 事务回滚。为了保证事务的原子性,事务中的操作要么全部完成,要么什么也不做。如果事务执行 ...
如无特殊说明,本文默认mysql使用的存储引擎是InnoDB。 什么是行锁、表锁?什么时候加表锁?怎么避免? # 行锁,是指锁的粒度是行级别的,其锁定的记录是某个记录或者间隙(也可能是多个)。 ...
请你解释一下EXPLAIN命令 # explain命令是用来查看mysql执行语句的执行计划,帮助我们分析SQL语句的性能瓶颈。其输出中各个列的作用如下: 列名 描述 id 每个select关键字都对 ...
前文我们已经介绍了sqlx的基本使用方法,今天我们来看一下怎样使用sqlx库来执行事务。 数据库:mysql。 准备 # 创建一张用户账户表: CREATE TABLE `user_account` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `user_id` int unsigned NOT NULL COMMENT '用户id& ...
sqlx是一款go语言的数据库操作库,它是对go语言自带的database/sql的扩展,提供了更多的功能,使用起来更加方便。 它能极大的方便我们对数据库的操作,提高开发效率,同时又没有G ...
本文中的问题来自极客时间的《后端工程师的高阶面经》 ,答案为本人的理解,仅供阅读者参考。 这门课还是非常不错的,虽然知识不一定完全准确,但是对于复习总结来说,绝对是一个好的大纲,推荐大家购买 ...
在InnoDB存储引擎中,事务id是用来标识事务的唯一数字标识,每个事务都有一个唯一的事务id。在mvcc、锁等很多场景中,我们都能看到事务id的影子。 那么,事务id是什么时候被分配的呢 ...
前言 # 刚使用mysql的前几年,没有深入地了解mysql的内部实现,关于B+树的叶子节点的了解仅仅是:B+树的叶子节点按照自增id的大小自左至右排序,新增的元素排在右边。 后来突然某一天在 ...