面经 - 0 - 数据库

本文主要探讨数据库性能优化,包括建立正确索引、良好查询规范、优化SQL执行计划和数据分页处理。重点讲解了客户端分页、应用服务器分页和数据库SQL分页的优缺点。同时,文章还涉及InnoDB的聚簇与非聚簇索引、B+树的选择以及MySQL的MVCC机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库性能优化

https://blog.csdn.net/yzllz001/article/details/54848513

1. 建立正确的索引。

为主键、外键、执行频率高的字段组合建立索引(太多占用空间 太少访问量大)

2. 形成良好查询规范。

只通过索引访问数据、只返回需要的字段、减少比较操作(like模糊查询)、合理使用排序分组算法。

  1. 不要动不动就select*
  2. 对于如:select id,name from company where type=‘2’;
    如果这个SQL经常使用,我们可以在type,id,name上创建组合索引:create index my_comb_index on company(type,id,name);

3. 优化SQL执行计划。

(选用正确的优秀算法来提高sql性能)

4. 数据分页处理。

一般数据分页方式有:

4.1.1、客户端(应用程序或浏览器)分页

将数据从应用服务器全部下载到本地应用程序或浏览器,在应用程序或浏览器内部通过本地代码进行分页处理(如利用application等进行浏览器端的缓存。参考:https://blog.csdn.net/s11show_163/article/details/112688560)

优点:编码简单,减少客户端与应用服务器网络交互次数

缺点:首次交互时间长,占用客户端内存

适应场景:客户端与应用服务器网络延时较大,但要求后续操作流畅,如手机GPRS,超远程访问(跨国)等等。

4.1.2、应用服务器分页

将数据从数据库服务器全部下载到应用服务器,在应用服务器内部再进行数据筛选。以下是一个应用服务器端Java程序分页的示例:

List list=executeQuery(“select * from employee order by id”);

Int count= list.size();

List subList= list.subList(10, 20);

优点:编码简单,只需要一次SQL交互,总数据与分页数据差不多时性能较好。

缺点:总数据量较多时性能较差。

适应场景:数据库系统不支持分页处理,数据量较小并且可控。

4.1.3、数据库SQL分页

采用数据库SQL分页需要两次SQL完成

一个SQL计算总数量
一个SQL返回分页后的数据

优点:性能好
缺点:编码复杂,各种数据库语法不同,需要两次SQL交互。

Innodb,聚簇索引和非聚簇索引区别

聚簇索引和非聚簇索引 很详细,通俗易懂:https://blog.csdn.net/s11show_163/article/details/118647446

为什么用 b+ 树而不是 b树,红黑树

https://blog.csdn.net/s11show_163/article/details/113484934

一千万条数据,问 b+ 数大概多高

https://blog.csdn.net/s11show_163/article/details/113484934

在设计联合索引需要注意什么

联合索引最左原则的底层原理

mysql 的 MVCC 以及是否解决幻读

手写sql,实现一个 按时间降序的分页查询

redo log,bin log,undo log

标题数据库中有两个关联列,请问在搜索时,这两个关联列会怎样?

  1. 存储引擎,索引的类别和区别
  2. 事务的隔离等级,可重复读的实现
    • 数据库问到经典问题,何时该使用索引,
  • 隔离级别以及各自解决的问题(脏读、不可重复读、幻读等);
  1. mySQL中怎么提升表的搜索速度?(索引、优化查询性能、调整内部变量)

https://www.cnblogs.com/tsflying/articles/2689143.html

29. 聊聊mysql与MongoDB
34. MongoDB更新document结构,那之前加入的数据会怎么样?
32. MC算法原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值