MySQL Interview Speedrun

MySQL Interview Speedrun

  1. mysql如何定位慢查询

    开启mysql的慢查询日志功能,默认超过2秒的sql语句会被记录到慢查询日志里。或者使用运维监测工具skywalking工具,它可以监测服务、接口和物理实例,可以通过它来知道哪个接口的sql执行速度比较慢。

  2. sql语句执行的很慢,如何分析

    使用explain执行计划来查询sql语句是否使用到了索引,如果没有,是不是没创建索引,没创建就去创建,创建了但没有到索引是不是语法上的问题导致索引失效,如果是就需要重新优化sql语句。另外,检查一下是否进行了回表操作,如果有则需要调整一下查询的字段,覆盖索引查询。还有就是如果使用了多个join,看看能不能使用缓存等方法减少join的个数,重写sql语句。

  3. 索引概念及索引底层数据结构

    索引是一种可以高效获取数据库数据的数据结构,mysql的索引底层使用的是b+树,相比b树的每个节点都存数据,b+树只有叶子节点存储数据,非叶子节点只存储索引,叶子节点通过节点连接成链表。

  4. 聚簇索引和非聚簇索引、回表查询

    聚簇索引是一种在叶子节点存储数据记录的索引,一般是主键id的索引;而非聚簇索引是在叶子节点存储主键id,一般是其他字段的索引。回表查询是指使用非聚簇索引进行查询,查询到主键id,然后进行回表操作,根据主键id去查完整的数据记录。

  5. 覆盖索引、超大分页优化

    覆盖索引是指所要查询的字段已经包含在索引里了,比如select name from student,name建立了非聚簇索引,但查询的字段name已经包含在索引里了,所以不需要回表查询。超大分页优化,可以使用覆盖索引+子查询的方式进行优化,就是通过子查询查询id的集合,再通过id集合来查最后的数据,这样能缩短sql语句时间。

  6. 索引创建的原则

    1.查询频率高的字段建立索引,2.值种类少的字段如性别只有男女不应建立索引,3.多个字段需要建立索引建议使用联合索引,4.字段值太长可以建立前缀索引,5.控制索引的数量,不需要每个字段都创建索引。

  7. 什么情况下索引会失效

    1.使用左模糊查询like '%xx’时,2.使用联合索引但查询条件不包含联合索引的第一个字段时,3.使用联合索引范围查询右边的字段时,范围查询字段的之后字段的索引失效,4.索引列上运算,5.字段是字符串类型但查询条件没加双引号或单引号时

  8. 谈谈你对sql优化的经验

    我觉得有以下几个方面吧。1.首先是数据库表字段的选取,要选取合适的类型,比如一个状态值只有有限的个位数取值,可以使用tinyint而不是int,这样可以节省内存,提高查询速度。2.索引创建原则。3.sql语句优化:select所需要的字段,避免select *回表查询;join时以小表驱动大表。4.主从复制,读写分离,让写数据不影响读数据。5.当数据量到达一定量,比如单表超过1000行或者大小超过20G时,可以考虑分表分库。

  9. 事务的特性

    A原子性,是指一个事务的多个操作,要么同时成功,要么同时失败,比如A转账B,A减钱,B就得加钱,要么都不发生变化;C一致性,是指事物前后有一个一致的状态,也是转账的例子,A转账B,A和B的钱总量是一致的;I隔离性,一个事物不能被其他事物所影响;D持久性,一个事物提交或回滚,那改变将是永久的。

  10. 并发事务问题、隔离级别

    并发事务会造成脏读、不可重复读、幻读的问题。脏读是指一个事务可以读到其他事务未提交的数据;不可重复读,是指一个事务的两次查询结果不一样;幻读是指一个事务查询某条数据不存在,然后插入时又提示这条数据已存在。mysql提供了4种隔离级别来解决这些问题。1.读未提交,会产生脏读。2.读已提交,解决了脏读,但会产生不可重复读的问题。3.可重复度,默认的隔离级别,解决了脏读、不可重复度的问题,解决不了幻读(虽然mysql依靠mvcc解决了部分幻读的问题)。4.串行读,加锁,完全串行化,解决了所有问题,但效率低下。

  11. undo log和redo log的区别

    redo log,记录的是数据页的物理变化,用于在数据库宕机时进行数据库恢复时使用,可以保证mysql的持久性。而undo log是一种逻辑日志,进行写操作时,undo log记录的是相反的操作,用于数据回滚时使用,可以保证mysql的原子性和一致性。

  12. mvcc

    mvcc多版本并发控制,是mysql用来保证多事务读写数据而不产生冲突的一种机制。mvcc包含以下三个部分:1.表的隐藏字段trx_id事务id和回滚指针roll_pointer。事务id每开启一个事务就自增1,回滚指针用于指向上一个版本数据的地址。2.undo log回滚日志,配合roll_pointer形成一条版本链。3.readview读视图,它里面定义了一些规则,快照读(直接select)会根据这些规则和事务id,选择一个最合适的版本进行读取,rr可重复读和rc读已提交是不同的,rr只有事务开启的第一次快照读会生成读视图,而rc每次快照读都会生成读视图。

  13. mysql主从同步原理

    主节点进行写操作,记录到binlog日志中,从节点开启一条IO线程读取主节点的binlog日志,并将数据写入到自己的relaylog日志中,同时开一条sql线程执行relaylog里的sql语句,以此来同步主节点的数据。

  14. 分表分库

    垂直分表(冷热分离)、水平分表(哈希或范围)、分区表(逻辑分表,时间范围、列表分区、哈希分区、复合分区)、垂直分库(按业务)、水平分库、分片分库(按某种规则)等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数论 | 质数

文章目录 质数的判定&#xff1a;试除法分解质因数&#xff1a;试除法筛质数朴素做法优化&#xff1a;埃氏筛法优化&#xff1a;线性筛法 质数的判定&#xff1a;试除法 不推荐i*i<n而推荐i<n/i的原因 可能存在i*i不溢出&#xff0c;但是(i1)(i1)溢出的情况 #include &l…

山西电力市场日前价格预测【2024-01-25】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-25&#xff09;山西电力市场全天平均日前电价为274.83元/MWh。其中&#xff0c;最高日前电价为562.65元/MWh&#xff0c;预计出现在18:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第 2章感知机

文章目录 第 2章感知机2.1 感知机模型2.2 感知机学习策略2.2.1 数据集的线性可分性2.2.2 感知机学习策略 2.3 感知机学习算法2.3.1 感知机学习算法的原始形式2.3.2 算法的收敛性2.3.3 感知机学习算法的对偶形式 实践&#xff1a;二分类模型&#xff08;iris数据集&#xff09;数…

vue3-深入组件-组件注册和props更多细节

组件注册 定义好的组件需要注册才能被使用。 注册方式有两种 全局注册 局部注册 全局注册 .component() 方法&#xff0c;让组件在当前 Vue 应用中全局可用。 在 main.ts 中 import ./assets/main.cssimport { createApp } from vue import { createPinia } from pinia i…

Nodejs前端学习Day1

妈的&#xff0c;学vue3需要15.0以上的nodejs 文章目录 前言一、学习目标二、学习目录三、为什么JavaScript可以在浏览器中被执行四、为什么JavaScript可以操作DOM和BOM五、浏览器中的JavaScript运行环境总结 前言 妈的&#xff0c;学vue3需要15.0以上的nodejs 一、学习目标 二…

golang导入go-git错误记录

代码&#xff1a; package mainimport (...(略)"github.com/src-d/go-git"...(略) )...(略)func gitClone(workspace, url, referenceName string, auth ssh.AuthMethod) (*git.Repository, error) {return git.PlainClone(workspace, false,&git.CloneOptions{…

javascript设计模式-观察者和命令

观察者 是一种管理人与任务之间的关系的得力工具&#xff0c;实质就是你可以对程序中某个对象的状态进行观察&#xff0c;并且在其发生改变时能够得到通知。一般有两种实现方式推或拉&#xff0c;在这个过程中各方的职责如下&#xff1a; 订阅者可以订阅和退订&#xff0c;他…

递归和尾递归(用C语言解斐波那契和阶乘问题)

很多人都对递归有了解&#xff0c;但是为尾递归很少&#xff0c;所以这次来专门讲一讲关于尾递归的一些问题。 什么是尾递归 如果一个函数中所有递归形式的调用都出现在函数的末尾&#xff0c;我们称这个递归函数是尾递归的。因为在一些题目的做法中&#xff0c;我们可以发现…

数据库安全细解

数据库是为了实现一定目的按某种规则和方法组织起来的“数据”的“集合”。数据库可以直观的理解为存放数据的仓库&#xff0c;而里面的数据按照一定的格式存放&#xff0c;便于查找。 数据库的作用 1.实现数据共享&#xff0c;减少数据的冗余度&#xff1a;同文件系统相比&a…

蓝桥杯:1.幸运数字(Java)

目录 题目描述&#xff1a;答案&#xff1a;考点&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 哈沙德数是指在某个固定的进位制当中&#xff0c;可以被各位数字之和整除的正整数。 例如126是十进制下的一个哈沙德数&#xff0c;因为(126)1o mod (1&#xff0b;2&…

c语言之scanf函数

scanf函数语法格式与printf函数很相似&#xff0c;语法是scanf(格式控制,地址列表)组成 其中格式控制分为两部分&#xff0c;一部分由双引号括起来的&#xff0c;%和格式字符组成的格式字符串 普通字符串则是原样输出 地址列表是若干地址组成的表列&#xff0c;可以是变量的…

解决 Git:ssh: connect to host github.com port 22: Connection timed out 问题的三种方案

1、问题描述&#xff1a; 其一、整体提示为&#xff1a; ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 中文为&#xff1a; ssh&#xff1a;连接到主机 github.com 端口 22&#xff1a;连接超时 fatal&a…

linux服务器ssh连接慢问题处理

一、 可能导致慢的几个原因 1、网络问题&#xff1a;网络延迟、带宽限制和包丢失等网络问题都有可能导致SSH连接变慢。 2、客户端设置&#xff1a;错误的客户端设置&#xff0c;如使用过高的加密算法或不适当的密钥设置&#xff0c;可能导致SSH连接变慢。 3、服务器负载过高…

MVC 和 MVVM的区别

MVC&#xff1a; M&#xff08;model数据&#xff09;、V&#xff08;view视图&#xff09;&#xff0c;C&#xff08;controlle控制器&#xff09; 缺点是前后端无法独立开发&#xff0c;必须等后端接口做好了才可以往下走&#xff1b; 前端没有自己的数据中心&#xff0c;太…

使用docker容器 将node应用程序打包成镜像

可以使得node服务应用程序可以通过流水线部署 安装docker 1、注意 我的服务器的系统是 centos7&#xff0c;所以这里写的是在centos7上按照的docker 注意&#xff1a;Docker 要求 CentOS 系统的内容版本高于3.10 uname -r打印&#xff1a;3.10.0-1160.105.1.el7.x86_64 //确定…

leetcode刷题(剑指offer) 240.搜索二维矩阵Ⅱ

240.搜索二维矩阵Ⅱ 编写一个高效的算法来搜索 *m* x *n* 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,…

【Effective C++】6. 继承与面向对象设计

Item32 确定你的public继承关系建模出is-a的关系 public继承的含义&#xff1a; is-a&#xff1a;student是一种person&#xff0c;person的范围更大在函数传参的过程&#xff0c;eta能同时接受person和student两种变量&#xff0c;反之不能 class Person {}; class Student…

27.移除元素(力扣LeetCode)

文章目录 27.移除元素&#xff08;力扣LeetCode&#xff09;题目描述方法一&#xff1a;vector成员函数&#xff1a;erase方法二&#xff1a;暴力解法方法三&#xff1a;双指针法 27.移除元素&#xff08;力扣LeetCode&#xff09; 题目描述 给你一个数组 nums 和一个值 val&…

[每日一题] 01.24 - 求三角形

求三角形 n int(input()) count1 (1 n) * n // 2 count2 n * n lis1 [str(i).zfill(2) for i in range(1,count1 1)] lis2 [str(i).zfill(2) for i in range(1,count2 1)]for i in range(0,len(lis2),n):print(.join(lis2[i:i n]))print()for i in range(1,n 1):tem…

代码中遇到的问题

编译器错误消息&#xff1a; CS1061&#xff1a; default_aspx 不包含 GridView1_SelectedIndexChanged 的定义&#xff0c;并且找不到接受类型为default_aspx的第一个参数的可访问扩展方法GridView1_SelectedIndexChanged&#xff08;是否缺少 using 指令或程序集引用&#xf…