后端面经系列-如何发现SQL中的问题
August 19, 2023
请你解释一下EXPLAIN命令 # explain命令是用来查看mysql执行语句的执行计划,帮助我们分析SQL语句的性能瓶颈。其输出中各个列的作用如下: 列名 描述 id 每个select关键字都对 ...
请你解释一下EXPLAIN命令 # explain命令是用来查看mysql执行语句的执行计划,帮助我们分析SQL语句的性能瓶颈。其输出中各个列的作用如下: 列名 描述 id 每个select关键字都对 ...
敏感词过滤,算是一个比较常见的功能,尤其是在内容、社交类应用中更是如此。本文介绍如何使用Go语言实现简单的敏感词过滤功能。 简单敏感词过滤-ai版 # 先列出一个gpt给出来的一个简单前缀树的 ...
viper是一款使用go语言开发的配置文件读取库,支持多种配置文件格式,包括yaml、json、toml等。viper还支持从环境变量读取配置,从远程配置中心读取配置。 本文仅介绍vipe ...
本文中的问题来自极客时间的《后端工程师的高阶面经》 ,答案为本人的理解,仅供阅读者参考。 这门课还是非常不错的,虽然知识不一定完全准确,但是对于复习总结来说,绝对是一个好的大纲,推荐大家购买 ...
在InnoDB存储引擎中,事务id是用来标识事务的唯一数字标识,每个事务都有一个唯一的事务id。在mvcc、锁等很多场景中,我们都能看到事务id的影子。 那么,事务id是什么时候被分配的呢 ...
关于Go语言中make和new的区别,已经在网上看到了很多文档,但是总觉得缺点什么,所以今天就自己写一篇文章来讲一下。 首先先说下网上说的关于make和new的区别,大致有以下几点: mak ...
前言 # 刚使用mysql的前几年,没有深入地了解mysql的内部实现,关于B+树的叶子节点的了解仅仅是:B+树的叶子节点按照自增id的大小自左至右排序,新增的元素排在右边。 后来突然某一天在 ...
什么是Buffer Pool # Buffer Pool(缓冲池),是InnoDB存储引擎在Mysql启动时向操作系统申请的一片连续的内存,是为了缓存磁盘中的页。 相关配置项: innodb_buffer_pool_size = 134217728 Buffer Pool的组成 # 缓冲页 Buffer Po ...
本文示例数据表版本:mysql8.0.32。隔离级别:读已提交。 什么是索引合并? # 索引合并指将多个索引的扫描结果合并起来,作为最终的扫描结果。 下面举例说明: 初始化表: CREATE TABLE `t8` ( `id` int unsigned NOT NULL AUTO_INCREMENT, ...
update语句未使用索引的后果 # 网上有一种说法:mysql的update语句不使用索引,会锁表;使用索引,会锁行。这种说法是非常不准确的。今天来简单分析一下。 本文使用的mysql版本为 ...