首页 > 编程知识 正文

产品经理面试题附答案,数据库面试常问问题及答案

时间:2023-05-04 22:13:38 阅读:48035 作者:1963

数据库常见问题(带答案) ) ) ) ) )。

1 .事务的四个特性

原子性是实行还是不实行

隔离性,在所有操作完成之前,其他会话将无法看到该进程

一致性、事务前后和数据总额的一致性

持久性,提交事务后,对数据的更改将是永久的

2 .数据库隔离级别

阅读多个事务可能会导致以下问题

脏读:事务处理b读取事务处理a尚未提交的数据

不可重复读取:如果获取一行两次,且该行的值在不同读取之间不同

如果在幻读:事务期间执行了两个相同的查询,而第二个查询返回的行集合与第一个查询不同,则这两个区别在于不能集中在一行上重复幻读

返回的集合不同

例如,Id=1行

在此插入图像说明

幻读,返回的集合不同

在此插入图像说明

隔离级别总结

[导出外链图像失败。 源站可能有防盗链机制。 建议保存图像并直接上传。 (img-LpKc9pki-1590216797436 ) ) 3358 note.Youdao.com/yws/RES/6317/webresource f 9444

3.MYSQL两种类型的存储引擎之间的差异(事务、锁定级别等),以及每个应用场景

发动机特性

MYISAM不支持外键、表锁。 插入数据时,锁定整个表。 检查表的总行数时,不需要所有表扫描

如果INNODB支持外键、行锁和查找表的总行数,则INNODB扫描所有表

4 .索引有b索引和hash索引

索引差异

散列索引,等效查询效率高,不能排序,不能进行范围查询

b数据有序,范围查询

5 .聚集索引和非聚集索引

索引差异

合计索引数据按照索引顺序被存储,在子节点中存储实际的物理数据

非聚合索引存储包含指向真正数据行的指针

6 .索引的优缺点,什么时候使用索引,什么时候不能使用索引

索引的最大好处是提高了查询速度

缺点是由于同时更新索引,所以更新数据时效率很低

经常查询数据并对其进行索引。 如果经常更改数据,请不要使用索引。

7.InnoDB索引和MyISAM索引之间的区别

一个是主索引的不同,InnoDB的数据文件本身就是索引文件。 MyISAM的索引和数据是分开的。

第二个是次索引的差异。 InnoDB的次索引data域包含相应的记录主数据

8 .索引下位实现(b树、为什么不采用红黑树、b树)要点

树的区别

红黑树增加、删除,红黑树频繁调整,保证红黑树的性质,浪费时间

b树是B-树的b树,查询性能不稳定,查询结果高度相同,每个节点保存指向实际数据的指针,看起来比b树每层按房间保存的元素多一些。

与其他两个树相比,b树b树矮、宽、查询层次浅

9.B树的实现

m以下b树具有以下特征:

1 .具有k个子树的中间节点包含k个元素(在b树中为k-1个元素),每个元素不存储数据,只用于索引,所有数据都存储在叶节点上。

2 .所有叶节点包含所有元素的信息以及指向包含这些元素的记录的指针,叶节点本身按照关键字从大到小的顺序链接。

3 .所有中间节点元素同时存在于子节点中,是子节点元素中最大(或最小)的元素

10 .为什么要使用B Tree

在索引期间发生磁盘I/O消耗。 主要看I/O次数。 与磁盘访问原理有关。

根据B-Tree的定义,可以看出搜索一次最多需要访问h个节点。 数据库系统的设计者巧妙利用磁盘预读原理,

将节点大小设置为等于一页,以便每个节点可以在单个I/O中完全加载

本地原理和磁盘预读

11.Sql优化

1.sql尽可能使用索引,查询跟踪索引

2 .优化SQL语句

子查询变为左连接

优化limit分布,利用ID定位后分页

or条件优化,多个or条件可以通过union all合并结果。 (union all结果可能重复。 )

不必要的排序

where、having代替having搜索所有记录,然后进行过滤

避免嵌套查询

在对多个字段进行等价查询时,结合索引

12 .索引最左边的前缀问题

如果将索引合并到三个字段中,则如果第二个字段中未使用索引,则第三个字段中也将无法使用索引

13 .索引分类、索引失效条件

索引类型概念

是常规索引的最基本索引,没有限制

唯一索引类似于“常规索引”,但索引列的值必须是唯一的,但允许空值。

主键索引这是一个特殊的唯一索引,不允许空值。

全文索引面向大数据,生成全文索引需要时间和空间。

组合索引按照“最左边的前缀”原则创建组合索引,以提高mysql的效率

失效条件

条件是or。 如果还想启用or条件,请对or中的每个字段进行索引

like查询,在%中开发

内部函数

计算索引列

不能使用is null,可以使用is not null

14 .数据库的主从复制

复制方式

操作
异步复制 默认异步复制,容易造成主库数据和从库不一致,一个数据库为Master,一个数据库为slave,通过Binlog日志,slave两个线程,一个线程去读master binlog日志,写到自己的中继日志一个线程解析日志,执行sql,master启动一个线程,给slave传递binlog日志
半同步复制 只有把master发送的binlog日志写到slave的中继日志,这时主库,才返回操作完成的反馈,性能有一定降低
并行操作 slave 多个线程去请求binlog日志
15.long_query怎么解决
设置参数,开启慢日志功能,得到耗时超过一定时间的sql
16.varchar和char的使用场景
类型 使用场景
varchar 字符长度经常变的
char 用字符长度固定的
17.数据库连接池的作用
维护一定数量的连接,减少创建连接的时间
更快的响应时间
统一的管理
19.分库分表,主从复制,读写分离
读写分离,读从库,写主库
spring配置两个数据库,通过AOP(面向切面编程),在写或读方法前面进行判断得到动态切换数据源。
20.数据库三范式
级别 概念
1NF 属性不可分
2NF 非主键属性,完全依赖于主键属性
3NF 非主键属性无传递依赖
21.关系型数据库和非关系型数据库区别
关系型数据库

优点

1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;

2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;
4、支持SQL,可用于复杂的查询。
5.支持事务

缺点
1、为了维护一致性所付出的巨大代价就是其读写性能比较差;
2、固定的表结构;
3、不支持高并发读写需求;
4、不支持海量数据的高效率读写
非关系型数据库

1、使用键值对存储数据;
2、分布式;
优点
无需经过sql层的解析,读写性能很高
基于键值对,数据没有耦合性,容易扩展
存储数据的格式:nosql的存储格式是key,value形式
缺点
不提供sql支持
22.数据库中join的left join , inner join, cross join
1.以A,B两张表为例
A left join B
选出A的所有记录,B表中没有的以null 代替
right join 同理

2.inner join
A,B有交集的记录

3.cross join (笛卡尔积)
A中的每一条记录和B中的每一条记录生成一条记录
例如A中有4条,B中有4条,cross join 就有16条记录
23.有哪些锁,select时怎么加排它锁
锁 概念
乐观锁 自己实现,通过版本号
悲观锁 共享锁,多个事务,只能读不能写,加 lock in share mode
排它锁 一个事务,只能写,for update
行锁 作用于数据行
表锁 作于用表
24.死锁怎么解决
找到进程号,kill 进程
25.最左匹配原则
最左匹配原则是针对索引的
举例来说:两个字段(name,age)建立联合索引,如果where age=12这样的话,是没有利用到索引的,
这里我们可以简单的理解为先是对name字段的值排序,然后对age的数据排序,如果直接查age的话,这时就没有利用到索引了,
查询条件where name=‘xxx’ and age=xx 这时的话,就利用到索引了,再来思考下where age=xx and name=’xxx‘ 这个sql会利用索引吗,
按照正常的原则来讲是不会利用到的,但是优化器会进行优化,把位置交换下。这个sql也能利用到索引了
之前的排版有问题

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。