35道MySQL面试必问题图解,茅塞顿开,真好理解呢

MySQL常见面试题汇总(建议收藏!!!) 目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)Innodb为什么要用自增id作为主键?(5)Hash 索引和 B+ 树索引有什么区别或者说优劣呢?(6)什么是聚簇索引(6)非聚簇索引一定会回表查询吗?(6)聚簇索引和非聚簇索引的区别(6)MyISAM和InnoDB实现B+树索引方式的区别是什么?(6)MySQL中有四种索引类型,可以简单说说吗?(6)覆盖索引是什么?(6)联合索引是什么?为什么需要注意联合索引中的顺序?(6)创建的索引有没有被使用到?或者说怎 阅读详情

关于面试题的文章之前发过不少,但读者们给的反馈是普遍是理解难,看完就忘。所以今天我会用画图来给大家分析一下这35道题,希望能够加深你们的理解。

篇幅所限,本文先写MySQL的35问,其他的技术栈我也都整理好了,后面会持续更新,点个关注不迷路

当然我知道肯定有等不及的同学,所以我会把整理好的文档都无偿分享出来,如图

​

感兴趣且需要的朋友详见文末!!

好了,那废话不多说,我们一起来揭开这35道题的神秘面纱

1.说一说三大范式

  • 「第一范式」:数据库中的字段具有「原子性」,不可再分,并且是单一职责

  • 「第二范式」:「建立在第一范式的基础上」,第二范式要求数据库表中的每个实例或行必须「可以被惟一地区分」。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键

  • 「第三范式」:「建立在第一,第二范式的基础上」,确保每列都和主键列直接相关,而不是间接相关不存在其他表的非主键信息

但是在我们的日常开发当中,「并不是所有的表一定要满足三大范式」,有时候冗余几个字段可以少关联几张表,带来的查询效率的提升有可能是质变的

2.MyISAM 与 InnoDB 的区别是什么?

​

  • 「InnoDB支持事务,MyISAM不支持」。

  • 「InnoDB 支持外键,而 MyISAM 不支持」。

  • 「InnoDB是聚集索引」,使用B+Tree作为索引结构,数据文件是和索引绑在一起的,必须要有主键。「MyISAM是非聚集索引」,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

  • 「InnoDB 不保存表的具体行数」。「MyISAM 用一个变量保存了整个表的行数」。

  • 5.Innodb 有 「redolog」 日志文件,MyISAM 没有

  • 6.「Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI」

  • Innodb:frm是表定义文件,ibd是数据文件

  • Myisam:frm是表定义文件,myd是数据文件,myi是索引文件

  • 「InnoDB 支持表、行锁,而 MyISAM 支持表级锁」

  • 8、「InnoDB 必须有唯一索引(主键)」,如果没有指定的话 InnoDB 会自己生成一个隐藏列Row_id来充当默认主键,「MyISAM 可以没有」

3.为什么推荐使用自增 id 作为主键?

​

  • 1.普通索引的 B+ 树上存放的是主键索引的值,如果该值较大,会「导致普通索引的存储空间较大」

  • 2.使用自增 id 做主键索引新插入数据只要放在该页的最尾端就可以,直接「按照顺序插入」,不用刻意维护

  • 3.页分裂容易维护,当插入数据的当前页快满时,会发生页分裂的现象,如果主键索引不为自增 id,那么数据就可能从页的中间插入,页的数据会频繁的变动,「导致页分裂维护成本较高」

4.一条查询语句是怎么执行的?

​

  • 1.通过连接器跟客户端「建立连接」

  • 2.通过查询「缓存查询」之前是否有查询过该 sql

  • 有则直接返回结果

  • 没有则执行第三步

  • 3.通过分析器「分析该 sql 的语义」是否正确,包括格式,表等等

  • 4.通过优化器「优化该语句」,比如选择索引,join 表的连接顺序

  • 5.「验证权限」,验证是否有该表的查询权限

  • 没有则返回无权限的错误

  • 有则执行第六步

  • 6.通过执行器调用存储引擎执行该 sql,然后返回「执行结果」

5.使用 Innodb 的情况下,一条更新语句是怎么执行的?

用以下语句来举例,c 字段无索引,id 为主键索引


update T set c=c+1 where id=2;

  • 1.执行器先找引擎取 id=2 这一行。id 是主键,引擎直接用树搜索找到这一行

  • 如果 id=2 这一行所在的数据页本来就「在内存中」,就「直接返回」给执行器

  • 「不在内存」中,需要先从磁盘「读入内存」,然后再「返回」

  • 2.执行器拿到引擎给的行数据,把这个值加上 1,比如原来是 N,现在就是 N+1,得到新的一行数据,再调用引擎接口「写入这行新数据」

  • 3.引擎将这行新数据更新到内存中,同时将这个更新操作「记录到 redo log 里面」,此时 redo log 处于 「prepare」 状态。然后告知执行器执行完成了,随时可以提交事务

  • 4.执行器「生成这个操作的 binlog」,并把 binlog 「写入磁盘」

  • 5.执行器调用引擎的「提交事务」接口,引擎把刚刚写入的 redo log 改成提交(commit)状态,「更新完成」

6.Innodb 事务为什么要两阶段提交?

  • 先写 redolog 后写binlog。假设在 redolog 写完,binlog 还没有写完的时候,MySQL 进程异常重启,这时候 binlog 里面就没有记录这个语句。然后你会发现,如果需要用这个 binlog 来恢复临时库的话,由于这个语句的 「binlog 丢失」,这个临时库就会少了这一次更新,恢复出来的这一行 c 的值就是 0,与原库的值不同。

  • 先写 binlog 后写 redolog。如果在 binlog 写完之后 crash,由于 redolog 还没写,崩溃恢复以后这个事务无效,所以这一行c的值是0。但是 binlog 里面已经记录了“把c从0改成1”这个日志。所以,在之后用 binlog 来恢复的时候就「多了一个事务出来」,恢复出来的这一行 c 的值就是 1,与原库的值不同。

可以看到,「如果不使用“两阶段提交”,那么数据库的状态就有可能和用它的日志恢复出来的库的状态不一致」。

7.什么是索引?

相信大家小时候学习汉字的时候都会查字典,想想你查字典的步骤,我们是通过汉字的首字母 a~z 一个一个在字典目录中查找,最终找到该字的页数。想想,如果没有目录会怎么样,最差的结果是你有可能翻到字典的最后一页才找到你想要找的字。

索引就「相当于我们字典中的目录」,可以极大的提高我们在数据库的查询效率。

8.索引失效的场景有哪些?

以下随便列举几个,不同版本的 mysql 场景不一

  • 1.最左前缀法则(带头索引不能死,中间索引不能断

  • 2.不要在索引上做任何操作(计算、函数、自动/手动类型转换),不然会导致索引失效而转向全表扫描

  • 3.不能继续使用索引中范围条件(bettween、<、>、in等)右边的列,如:



select a from user where c > 5 and b = 4;

  • 4.索引字段上使用(!= 或者 < >)判断时,会导致索引失效而转向全表扫描

  • 5.索引字段上使用 is null / is not null 判断时,会导致索引失效而转向全表扫描。

  • 6.索引字段使用like以通配符开头(‘%字符串’)时,会导致索引失效而转向全表扫描,也是最左前缀原则。

  • 7.索引字段是字符串,但查询时不加单引号,会导致索引失效而转向全表扫描

  • 8.索引字段使用 or 时,会导致索引失效而转向全表扫描

9.为什么采用 B+ 树,而不是 B-树

B+ 树只在叶子结点储存数据,非叶子结点不存具体数据,只存 key,查询更稳定,增大了广度,而一个节点就是磁盘一个内存页,内存页大小固定,那么相比 B 树,B- 树这些「可以存更多的索引结点」,宽度更大,树高矮,节点小,拉取一次数据的磁盘 IO 次数少,并且 B+ 树只需要去遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,效率更高。

10.WAl 是什么?有什么好处?

WAL 就是 Write-Ahead Logging,其实就是「所有的修改都先被写入到日志中,然后再写磁盘」,用于保证数据操作的原子性和持久性。

好处:

  • 1.「读和写可以完全地并发执行」,不会互相阻塞

  • 2.先写入 log 中,磁盘写入从「随机写变为顺序写」,降低了 client 端的延迟就。并且,由于顺序写入大概率是在一个磁盘块内,这样产生的 io 次数也大大降低

  • 3.写入日志当数据库崩溃的时候「可以使用日志来恢复磁盘数据」

11.什么是回表?

​

回表就是先通过数据库索引扫描出该索引树中数据所在的行,取到主键 id,再通过主键 id 取出主键索引数中的数据,即基于非主键索引的查询需要多扫描一棵索引树.

12.什么是索引下推?

如果存在某些被索引的列的判断条件时,MySQL 将这一部分判断条件传递给存储引擎,然后由存储引擎通过判断索引是否符合 MySQL 服务器传递的条件,「只有当索引符合条件时才会将数据检索出来返回给 MySQL 服务器」 。

13.什么是覆盖索引?

覆盖索引(covering index)指一个查询语句的执行只用从索引中就能够取得,不必从数据表中读取,可以减少回表的次数。比如:

select id from t where age = 1;

id 为主键索引,age 为普通索引,age 这个索引树存储的就是逐渐信息,可以直接返回

14.什么是最左前缀原则?

最左前缀其实说的是,在 where 条件中出现的字段,「如果只有组合索引中的部分列,则这部分列的触发索引顺序」,是按照定义索引的时候的顺序从前到后触发,最左面一个列触发不了,之后的所有列索引都无法触发。

比如「有一个 (a,b,c) 的组合索引」

where a = 1 and b = 1

此时 a,b 会命中该组合索引

where a = 1 and c = 1

此时 a 会命中该组合索引, c 不会

where b = 1 and c = 1

此时不会命中该组合索引

15.普通索引和唯一索引该怎么选择?

  • 查询

  • 当普通索引为条件时查询到数据会一直扫描,直到扫完整张表

  • 当唯一索引为查询条件时,查到该数据会直接返回,不会继续扫表

  • 更新

  • 普通索引会直接将操作更新到 change buffer 中,然后结束

  • 唯一索引需要判断数据是否冲突

所以「唯一索引更加适合查询的场景,普通索引更适合插入的场景」

16.什么是事务?其特性是什么?

事务是指是程序中一系列操作必须全部成功完成,有一个失败则全部失败。

​

特性

  • 「1.原子性(Atomicity)」:要么全部执行成功,要么全部不执行。

  • 「2.一致性(Consistency)」:事务前后数据的完整性必须保持一致。

  • 「3.隔离性(Isolation)」:隔离性是当多个事务同事触发时,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

  • 「4.持久性(Durability)」:事务完成之后的改变是永久的。

17.事务的隔离级别?

  • 1.「读提交」:即能够「读取到那些已经提交」的数据

  • 2.「读未提交」:即能够「读取到没有被提交」的数据

  • 3.「可重复读」:可重复读指的是在一个事务内,最开始读到的数据和事务结束前的「任意时刻读到的同一批数据都是一致的」

  • 4.「可串行化」:最高事务隔离级别,不管多少事务,都是「依次按序一个一个执行」

​

  • 「脏读」

  • 脏读指的是「读到了其他事务未提交的数据」,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读

  • 「不可重复读」

  • 对比可重复读,不可重复读指的是在同一事务内,「不同的时刻读到的同一批数据可能是不一样的」。

  • 「幻读」

  • 幻读是针对数据插入(INSERT)操作来说的。假设事务A对某些行的内容作了更改,但是还未提交,此时事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了,而这时,在事务A中查询,会发现「好像刚刚的更改对于某些数据未起作用」,但其实是事务B刚插入进来的这就叫幻读

18.binlog 是做什么的?

binlog 是归档日志,属于 Server 层的日志,是一个二进制格式的文件,用于「记录用户对数据库更新的SQL语句信息」。

主要作用

  • 主从复制

  • 数据恢复

19.undolog 是做什么的?

undolog 是 InnoDB 存储引擎的日志,用于保证数据的原子性,「保存了事务发生之前的数据的一个版本,也就是说记录的是数据是修改之前的数据,可以用于回滚」,同时可以提供多版本并发控制下的读(MVCC)。

主要作用

  • 事务回滚

  • 实现多版本控制(MVCC)

20.relaylog 是做什么的?

relaylog 是中继日志,「在主从同步的时候使用到」,它是一个中介临时的日志文件,用于存储从master节点同步过来的binlog日志内容。

​

编辑切换为居中

添加图片注释,不超过 140 字(可选

master 主节点的 binlog 传到 slave 从节点后,被写入 relay log 里,从节点的 slave sql 线程从 relaylog 里读取日志然后应用到 slave 从节点本地。从服务器 I/O 线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后 SQL 线程会读取 relay-log 日志的内容并应用到从服务器,从而「使从服务器和主服务器的数据保持一致」。

21.redolog 是做什么的?

redolog 是 「InnoDB 存储引擎所特有的一种日志」,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。

可以做「数据恢复并且提供 crash-safe 能力」

当有增删改相关的操作时,会先记录到 Innodb 中,并修改缓存页中的数据,「等到 mysql 闲下来的时候才会真正的将 redolog 中的数据写入到磁盘当中」。

22.redolog 是怎么记录日志的?

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

InnoDB 的 redo log 是固定大小的,比如可以配置为一组4个文件,每个文件的大小是1GB,那么总共就可以记录4GB的操作。「从头开始写,写到末尾就又回到开头循环写」。

所以,如果数据写满了但是还没有来得及将数据真正的刷入磁盘当中,那么就会发生「内存抖动」现象,从肉眼的角度来观察会发现 mysql 会宕机一会儿,此时就是正在刷盘了。

23.redolog 和 binlog 的区别是什么?

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 1.「redolog」 是 「Innodb」 独有的日志,而 「binlog」 是 「server」 层的,所有的存储引擎都有使用到

  • 2.「redolog」 记录了「具体的数值」,对某个页做了什么修改,「binlog」 记录的「操作内容」

  • 3.「binlog」 大小达到上限或者 flush log 「会生成一个新的文件」,而 「redolog」 有固定大小「只能循环利用」

  • 4.「binlog 日志没有 crash-safe 的能力」,只能用于归档。而 redo log 有 crash-safe 能力。

24.说一说 mvcc 吧,有什么作用?

MVCC:多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于「提高数据库高并发场景下的吞吐性能」。

在 MVCC 协议下,每个读操作会看到一个一致性的快照,「这个快照是基于整个库的」,并且可以实现非阻塞的读,用于「支持读提交和可重复读隔离级别的实现」。

MVCC 允许数据具有多个版本,这个版本可以是时间戳或者是全局递增的事务 ID,在同一个时间点,不同的事务看到的数据是不同的,这个修改的数据是「记录在 undolog 中」的。

25.一条 Sql 语句查询一直慢会是什么原因?

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 「1.没有用到索引」

  • 比如函数导致的索引失效,或者本身就没有加索引

  • 「2.表数据量太大」

  • 考虑分库分表吧

  • 「3.优化器选错了索引」

  • 「考虑使用」 force index 强制走索引

26.一条 Sql 语句查询偶尔慢会是什么原因?

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 「1. 数据库在刷新脏页」

  • 比如 「redolog 写满了」,「内存不够用了」释放内存如果是脏页也需要刷,mysql 「正常空闲状态刷脏页」

  • 「2. 没有拿到锁」

27.Mysql 主从之间是怎么同步数据的?

  • 1.master 主库将此次更新的事件类型「写入到主库的 binlog 文件」中

  • 2.master 「创建 log dump 线程通知 slave」 需要更新数据

  • 3.「slave」 向 master 节点发送请求,「将该 binlog 文件内容存到本地的 relaylog 中」

  • 4.「slave 开启 sql 线程」读取 relaylog 中的内容,「将其中的内容在本地重新执行一遍」,完成主从数据同步

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

「同步策略」:

  • 1.「全同步复制」:主库强制同步日志到从库,等全部从库执行完才返回客户端,性能差

  • 2.「半同步复制」:主库收到至少一个从库确认就认为操作成功,从库写入日志成功返回ack确认

28.主从延迟要怎么解决?

  • 1.MySQL 5.6 版本以后,提供了一种「并行复制」的方式,通过将 SQL 线程转换为多个 work 线程来进行重放

  • 2.「提高机器配置」(王道)

  • 3.在业务初期就选择合适的分库、分表策略,「避免单表单库过大」带来额外的复制压力

  • 4.「避免长事务」

  • 5.「避免让数据库进行各种大量运算」

  • 6.对于一些对延迟很敏感的业务「直接使用主库读」

29.删除表数据后表的大小却没有变动,这是为什么?

在使用 delete 删除数据时,其实对应的数据行并不是真正的删除,是「逻辑删除」,InnoDB 仅仅是将其「标记成可复用的状态」,所以表空间不会变小

30.为什么 VarChar 建议不要超过255?

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

当定义varchar长度小于等于255时,长度标识位需要一个字节(utf-8编码)

当大于255时,长度标识位需要两个字节,并且建立的「索引也会失效」

31.分布式式事务怎么实现?

  • 1.「本地消息表」

  • 2.「消息事务」

  • 3.「二阶段提交」

  • 4.「三阶段提交」

  • 5.「TCC」

  • 6.「最大努力通知」

  • 7.「Seata 框架」

七种分布式事务的解决方案,一次讲给你听

32.Mysql 中有哪些锁?

以下并不全,主要理解下锁的意义即可

  • 基于锁的属性分类:共享锁、排他锁

  • 基于锁的粒度分类:表锁、行锁、记录锁、间隙锁、临键锁

  • 基于锁的状态分类:意向共享锁、意向排它锁、死锁

33.为什么不要使用长事务?

​

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 1.并发情况下,数据库「连接池容易被撑爆」

  • 2.「容易造成大量的阻塞和锁超时」

  • 长事务还占用锁资源,也可能拖垮整个库,

  • 3.执行时间长,容易造成「主从延迟」

  • 4.「回滚所需要的时间比较长」

  • 事务越长整个时间段内的事务也就越多

  • 5.「undolog 日志越来越大」

  • 长事务意味着系统里面会存在很老的事务视图。由于这些事务随时可能访问数据库里面的任何数据,所以这个事务提交之前,数据库里面它可能用到的回滚记录都必须保留,这就会导致大量占用存储空间。

34.buffer pool 是做什么的?

buffer pool 是一块内存区域,为了「提高数据库的性能」,当数据库操作数据的时候,把硬盘上的数据加载到 buffer pool,不直接和硬盘打交道,操作的是 buffer pool 里面的数据,数据库的增删改查都是在 buffer pool 上进行

buffer pool 里面缓存的数据内容也是一个个数据页

其中「有三大双向链表」:

  • 「free 链表」

  • 用于帮助我们找到空闲的缓存页

  • 「flush 链表」

  • 用于找到脏缓存页,也就是需要刷盘的缓存页

  • 「lru 链表」

  • 用来淘汰不常被访问的缓存页,分为热数据区和冷数据区,冷数据区主要存放那些不常被用到的数据

预读机制:

  • Buffer Pool 有一项特技叫预读,存储引擎的接口在被 Server 层调用时,会在响应的同时进行预判,将下次可能用到的数据和索引加载到 Buffer Pool

35.说说你的 Sql 调优思路吧

​

  • 1.「表结构优化」

  • 1.1拆分字段

  • 1.2字段类型的选择

  • 1.3字段类型大小的限制

  • 1.4合理的增加冗余字段

  • 1.5新建字段一定要有默认值

  • 2.「索引方面」

  • 2.1索引字段的选择

  • 2.2利用好mysql支持的索引下推,覆盖索引等功能

  • 2.3唯一索引和普通索引的选择

  • 3.「查询语句方面」

  • 3.1避免索引失效

  • 3.2合理的书写where条件字段顺序

  • 3.3小表驱动大表

  • 3.4可以使用force index()防止优化器选错索引

  • 4.「分库分表」

感兴趣且需要资料的朋友关注+私信【学习】或vx公众号【小马的后端宇宙】即可获取哦~!

mysql高频面试题合集 1.请你谈谈 MySQL 事务隔离级别,MySQL 的默认隔离级别是什么?p25 为了达到事务的四大特性,数据库定义了 4 种不同的事务隔离级别: READ-UNCOMMITTED(读取未提交):最低的隔离级别,允许脏读,也就是可能读取 到其他会话中未提交事务修改的数据,可能会导致脏读、幻读或不可重复读。  READ-COMMITTED(读取已提交): 只能读取到已经提交的数据。Oracle 等多数数 据库默认都是该级别 (不重复读),可以阻止脏读,但是幻读或不可重复读仍有可能发 生。  REPEAT 阅读详情

相关推荐

mysql面试题100题,包含答案和解析.docx

mysql面试题,包含总共100题,并且附带详细答案和解析,部分面试题如下: 1、MySQL 索引使用有哪些注意事项呢? 2、MySQL 遇到过死锁问题吗,你是如何解决的? 3、日常工作中你是怎么优化SQL的? 4、InnoDB与MyISAM的区别 5、数据库索引的原理,为什么要用 B+树,为什么不用二叉树? 6、聚集索引与非聚集索引的区别 7、limit 1000000 加载很慢的话,你是怎么解决的呢? 8、如何选择合适的分布式主键方案呢? 10、事务的隔离级别有哪些?MySQL的默认隔离级别是什么? 11、什么是幻读,脏读,不可重复读呢? 12、在高并发情况下,如何做到安全的修改同一行数据? 13、数据库的乐观锁和悲观锁。 14、SQL优化的一般步骤是什么,怎么看执行计划(explain),如何理解其中各个字段的含义。 15、select for update有什么含义,会锁表还是锁行还是其他。 16、MySQL事务得四大特性以及实现原理 17、如果某个表有近千万数据,CRUD比较慢,如何优化。 18、如何写sql能够有效的使用到复合索引。 19、mysql中in 和exists的

115 道 MySQL 面试题,从简单到深入!

最新115道MySQL面试题,会持续更新

码农小郑有话说的博客 2万+

从零开始,手把手教你用RTL代码设计一个简单的8位CPU(附状态图与ALU设计)

本文详细介绍了如何从零开始设计一个简单的8位CPU,包括状态机设计、ALU实现与RTL编码实战。通过具体的指令集分析、状态图设计和Verilog代码示例,帮助读者深入理解CPU工作原理,并掌握RTL代码编写技巧。特别适合计算机系统学习者和硬件设计爱好者。

weixin_30847063的博客 320

【MySQL面试题(66道)】

MySQL数据库基础知识问答,包含内外连接区别、表删除的区别、SQL语句执行流程等;数据库架构设计,采用哪些存储引擎、有何区别,MySQL日志有哪些、有何作用,SQL优化方式,索引的分类、适用场景、采用的数据结构、B+树有何优点,数据库锁有哪些、行锁的实现,事务的特性、如何保证ACID、隔离级别、脏读、幻读等,数据库读写分离的实现、主从复制原理、分表方法等,百万级大数据的删除与添加解决方法。

独上高楼,望尽天涯路。 4万+

多旋翼飞行器设计与控制·Pixhawk4以及外部设备接线(笔记004)

笔记主要来源:Pixhawk 4 接线快速入门 目录 一、Pixhawk 4 的各个接口 二、接线图概览(重要传感器及外围设备) 三、飞控、GPS的安装和方向 四、电源 五、无线电遥控 六、数传电台(可选) 七、SD Card(可选) 八、电机以及其他外设 一、Pixhawk 4 的各个接口 FMU:Flight Management Unit 飞行管理组件 主 FMU 处理器:STM32F765 32 位 Arm® Cortex®-M7,216MHz,2MB...

猪猪的博客 1万+

别再只调包了!深入理解机器学习虚拟筛选中的分子指纹(ECFP/Morgan)

本文深入探讨了ECFP/Morgan分子指纹在机器学习虚拟筛选中的应用与优化策略。通过解析半径参数与比特长度的化学意义,揭示了如何通过参数调优提升模型性能20%以上,特别适用于药物发现领域的高通量筛选。文章还提供了工程实践中的参数优化策略和多指纹融合技术,为开发者提供从理论到实践的全面指导。

weixin_33704234的博客 829

mysql面试题(最全)

整理的最全的 mysql 面试题

QRLYLETITBE的博客 1万+

当兵心理测试软件,当兵心理测试题及答案

心理测试是一种比较先进的测试方法,它是指通过一系列手段,将人的某些心理特征数量化,来衡量个体心理因素水平和个体心理差异差异的一种科学测量方法。小编为你整理了当兵心理测试题及答案,希望对你有所参考帮助。征兵心理测试题(1代表是2代表否)1、我的胃口很好。12、我早上起来的时候,多半觉得睡眠充足,头脑清醒13、我喜欢看报纸上的犯罪新闻。14、有时我常感到困难重重,无法克服。25、我时常遇见一些所谓的专...

weixin_42128393的博客 1万+

MySQL 精选 60 道面试题(含答案)

基础关系型数据库的优点非关系型数据库(NOSQL)的优点Server 层按顺序执行 SQL 的步骤为:根本原因扩展三种常见的索引底层数据结构:分别是哈希表、有序数组和搜索树。根据叶子节点的内容,索引类型分为主键索引和非主键索引。两个考虑因素:为什么选择 B+ 树:覆盖索引:索引下推:- 反过来,假设一个业务的更新模式是写入之后马上会做查询,那么即使满足了条件,将更新先记录在 change buffer,但之后由于马上要访问这个数据页,会立即触发 merge 过程。这样随机访问 IO 的次数不会减少,反而增加

hahazz233的博客 14万+

【拼多多笔试题汇总】2024-03-24-拼多多春招笔试题

A 小镇上有个奇特的游戏。游戏开始时,A 先生准备了一排 nnn 个物品。K 小姐和卢小姐则轮流进行操作。首先,K 小姐可以选择移除至多 xxx 个物品。接着,卢小姐也可以选择移除剩余物品中的至多 yyy 个。游戏的目标是,K 小姐想尽量让剩余物品的价值之和最大化,而卢小姐则想将剩余物品的价值之和最小化。假设两人都采取最优策略,请问最后剩余物品的价值之和是多少?第一行包含五个正整数 n,m,k,x,yn, m, k, x, yn,m,k,x,y,分别表示物品的总数、K 小姐最多可移除的物品数、卢小姐最多可移

春秋招笔试突围 1万+

ISO13849功能安全从入门到精通(3):安全功能及其对降低风险的贡献4

例如,如果机器必须在有限速度下运行时进行设置,那么在低加速度值下进行设置时,参数P1将是正确的选择:随着危险缓慢出现并给予足够的运动自由,操作员将能够移出危险区域。例如,在无故障的条件下,在操作者的手的方向移动的滚子不能陷住它。在所有其他情况下,F1是正确的选择,前提是危险暴露的持续时间不超过机器总操作时间的1/20。需求来源于必要的风险降低。由于这些考虑而降低的PLr在任何情况下都不得低于通过比较方式考虑的机器的PLr,因为并不能从事故发生率低和严重程度低得出实施的安全功能提供的安全水平高于要求。

wdconan001的博客 834

MySQL 常见面试问题总结

MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现在属于Oracle公司。✅ 开源免费(社区版)⚡ 性能高、运行速度快👥 支持多用户、多线程🖥️ 跨平台支持(Windows、Linux、Mac等)💻 支持多种编程语言接口📊 使用标准的SQL数据语言🔄 提供事务支持和外键约束🏢 支持大型数据库🛠️ 提供多种存储引擎选择🔒 良好的安全性和连接性事务定义事务是一组原子性的SQL查询,要么全部执行成功,要么全部失败回滚。

weixin_52242569的博客 8102

RAGFlow体验大提升:使用GPU加速

场景:在正常部署过程中,启动RAGFlow会用到docker-compose.yml文件来启动。但是在实际使用过程中,会发现RAGFlow极其的卡和笨重,给一一种很不好的用户体验,有没有一种可以让RAGFlow加速的呢?进入RAGFlow的docker目录下会有发现有很多docker的配置文件。方法一:选择docker-compose-gpu.yml这个来启动项目。两个方法选其一 ,就会让你的RAGFlow的使用起来非常的丝滑!方法二:在docker-compose.yml末尾加上。

Ven%的博客 3156

115道MySQL面试题(含答案),从简单到深入!

数据库事务是一个作为单个逻辑工作单元执行的一系列操作。事务具有ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这意味着事务内的操作要么全部成功,要么全部失败,保持数据完整性,并且独立于其他事务运行。索引是数据库对象,可以提高数据检索的速度。它类似于书的目录,使数据库能够快速定位并检索数据,而不必扫描整个表。索引尤其在处理大量数据时显著提高查询性能。视图是基于SQL语句的结果集的可视化表现。

m0_67912929的博客 1万+

基于上下文的 Listwise 重排模型(一):miRNN

2018年阿里团队提出的miRNN(Mutual Influence aware RNN)模型,首次将电商搜索重排建模为全局优化问题,通过RNN捕捉商品序列的相互影响,结合Beam Search生成最优排序,在淘宝搜索中实现GMV(商品交易总额)提升5%的突破。本文将结合论文细节与通俗案例,拆解这一工业级重排框架的核心逻辑。

进一步有进一步的欢喜~ 1918

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MySQL最常问的10道面试题(2023详解版)

1.什么是聚集索引和非聚集索引简单来说,聚集索引就是基于主键创建的索引,除了主键索引以外的其他索引,称为非聚集索引,也叫做二级索引。由于在InnoDB引擎里面,一张表的数据对应的物理文件本身就是按照B+树来组织的一种索引结构,而聚集索引就是按照每张表的主键来构建一颗B+树,然后叶子节点里面存储了这个表的每一行数据记录。所以基于InnoDB这样的特性,聚集索引并不仅仅是一种索引类型,还代表着一种数据的存储方式。

weixin_46781683的博客 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Mysql必会面试题(第一篇)

Mysql中的连接是通过两个或多个表之间的列进行关联,从而获取相关联的数据。内连接(inner join):返回两个表中连接字段匹配的行。如果一个表中的行在另一个表中没有匹配的行,则这些行不会出现在查询结果中。假设有两个表,Employees 和 Departments。2.外连接(outer join):不仅返回两个表中匹配的行,还返回左表、右表或两者中未匹配的行。这个查询将返回所有员工的名字和他们部门的名字,即使某些员工没有分配到部门。

xiaoye7288的博客 4764

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

常见(MySQL)面试题(含答案)

存储过程是一个预编译的SQL语句,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。可以供外部程序调用,比如java程序存储过程是一个预编译的SQL语句,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。可以供外部程序调用,比如java程序。...

m0_63592370的博客 4万+

15道常见的MySQL面试题及解析

通过本文,我们回顾了面试中常见的15道MySQL查询语句面试题,并提供了每个问题的简洁解答。在 MySQL 的面试中,了解常见的问题和解决方法是非常重要的。本文将介绍15道常见的MySQL面试题,并提供详细的解析和答案。以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

2201_75869073的博客 8969

MySQL的面试题讲解看完肯定对你有帮助!!(精选24道)

MySQL是一种开源的关系型数据库管理系统(RDBMS)。它是使用C和C++编写的,并由Oracle公司开发和维护。MySQL是目前最流行的开源数据库之一,广泛应用于Web应用程序开发和数据存储。了解MQL的基本语法、优化技巧和数据库管理知识,并在实际操作中进行练习,将有助于你在面试中更好地回答问题。为了更好地准备,还可以参考MySQL官方文档和其他权威资源。祝你面试成功!

万维网连五洲,二进制写尽天下事,喜欢结识新伙伴寻找志同道合的朋友,欢迎一起探讨学习 3565

MySQL面试题大全,MySQL必刷的那些面试题(2024版)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

2301_82257730的博客 2665

JAVA:Mysql 常见面试题的技术指南

答:主从复制原理: 主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个IO 线程,将主库的 binlog 日志拷贝到自己本地,写入一个relay 中继日志中。接着从库中有一个 SQL 线程会从中继日志读取 binlog,然后执行binlog 日志中的内容,也就是在自己本地再次执行一遍 SQL。主从延迟:a. 主库的从库太多b. 从库硬件配置比主库差c. 慢 SQL 语句过多d. 主从库之间的网络延迟e. 主库读写压力大。

木头 4570

MySQL 高频面试题(由浅到深 完整版,面试必背)

MySQL面试核心考点摘要 本文系统梳理MySQL面试三大核心板块:基础、进阶原理与高级优化,覆盖存储引擎、索引、事务、锁机制等高频考点。 基础核心篇(40%) InnoDB与MyISAM核心区别:事务支持、锁机制及适用场景 索引原理:B+树优势、最左匹配原则及失效场景 事务ACID特性与隔离级别(RR解决幻读机制) 进阶原理篇(35%) 锁机制:行锁/表锁触发条件及悲观锁、乐观锁应用场景 MVCC实现原理:多版本控制与ReadView可见性规则 三大日志:redo log(持久性)、undo log(原子

萧曳丶 5645

某度互联网大厂 MySQL 面试题解析

本文总结了MySQL面试中的15个核心知识点,包括数据库隔离级别(推荐可重复读)、存储引擎(InnoDB与MyISAM区别)、锁机制、分页优化等关键内容。重点分析了性能优化方法如索引使用、分页查询优化策略,并解释了ACID特性、三范式等数据库基础概念。文章还对比了B树与B+树结构,以及悲观锁和乐观锁的应用场景,为应对MySQL技术面试提供了全面的知识储备。

qq_33665793的博客 1200

mysql面试题汇总(全面)

框架 考察的知识点较深入,以阿里巴巴为例,这些大厂的面试都是类似的,通常从一个大的面试点切入,然后层层深入,直到问到你不会为止,比如,你了解哪些数据库引擎?这个数据库引擎的特点是什么?这个数据库引擎是如何存储数据的?为什么要采用这种存储方式?等等。 所以针对以上两个问题,作者结合自己 10 余年的工作和面试的经验,经过讨论和修改,最终制定了八大模块,汇总并介绍 MySQL 中的典型面试问题,它包含...

GFDGFHSDS的博客 4548
上一篇: 图解Kafka Producer 内存池架构设计
下一篇: 这份内部800页MySQL性能优化法则笔记,好好学习,天天向上
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值