资讯专栏INFORMATION COLUMN

数据库面试题

tabalt / 2511人阅读

摘要:不过这里的时间指的是系统版本号死锁数据库的解释现象两个或两个以上事务在同一资源相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。并发控制解决问题我在读数据,你在删数据的情况锁分类读锁共享锁,不阻塞写锁排他锁,排除其他写锁和读锁。

数据库面试题

DBS DBMS DB区别

DBS 数据库系统

DBMS 数据库管理系统

DB 数据库

数据库系统dbs包括但不限于数据库管理系统dbms和数据库db

MySQL存储引擎

InnoDB(默认):支持事物,表锁,行锁设计,支持外键

MyISAM:不支持事物和表锁设计,不支持外键

事物

使用场景

转账:

a转账给b,a账户减少

b账户增加

过程就要用到事物,转账事物就回滚

解释:一组原子性的SQL查询(结合ACID)

ACID特性

A:原子性

C:一致性

I:隔离性

D:持久性

隔离级别(低到高)

read uncommitted(未提交读)

read committed(提交读):大多数数据库默认的级别

repeatable read (可重复读):mysql默认级别,解决了脏读问题,InnoDB通过mvcc可解决幻读问题

serializable(可串行化):最高的隔离级别,不能并发,解决了幻读问题,会产生超时 锁争用问题

乐观锁与悲观锁

悲观锁

特征(what):每次操作数据都会加锁

常见例子:mysql中行锁 表锁 读锁 写锁 ;java的中重量级锁synchronized

乐观锁

特征(what):操作数据时不加锁

实现方法(how):通过版本控制和cas算法实现

优点:适用于多读的应用类型,可以提高吞吐量

常见例子:java中的原子变量类(cas算法)

MVCC多版本并发控制

是啥(what):

可以认为是行级锁的变种,他在很多情况下避免加锁,花销更低

分类:

乐观并发控制和悲观并发控制

实现(mysal的innodb引擎):

通过在每行记录后面保存两个隐藏的列来实现,一个是保存行的创建时间,一个是保存行的过期时间。不过这里的时间指的是系统版本号

死锁(数据库的)

解释现象:两个或两个以上事务在同一资源相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。

并发控制

解决问题:我在读数据,你在删数据的情况

锁分类:

读锁:共享锁,不阻塞

写锁:排他锁,排除其他写锁和读锁。

锁策略

解决问题:提高性能

分类:

表锁:开销最小
行级锁:最大程度支持并发,但开销最大

范式分类

1nf:属性具有原子性

2nf:在1nf基础上消除非主属性对主码的部分依赖

3nf:在2nf基础上消除传递依赖

范式与反范式

范式:

优点:

更新比反范式快
修改数据少
表比较小,存在内存中,执行快

缺点:

需要关联

反范式:

优点:

避免关联

缺点:

信息冗余

Char varchar

Char是定长 剩余空间会用空格填充

Varchar是可变长

MySQL date、datetime和timestamp类型的区别

https://zhuanlan.zhihu.com/p/...

索引(书的目录)

解决问题(why):方便查找数据

优点:

大大减少服务器需要扫描的数据量

帮助服务器避免排序和临时表

将随机io变成顺序io

缺点:

时间:创建索引,维护索引需要时间

空间:创建索引占用物理空间

创建索引的原则

最左前缀匹配原则,具体在联合索引体现,mysql会一直向右匹配,当遇到范围查询会停止,此时把范围查询的索引放到最后即可

经常作为查询的字段作为索引

更新频繁的字段不适合做索引

定义有外键的字段一定要做索引

尽量扩展索引,不要重新新建索引

索引分类

按底层数据结构分:

b数索引(底层是b+数)
哈希索引
空间数据(r-tree)索引
全文索引

按逻辑分类

主键索引(特殊的唯一索引,不允许null值)
单列索引
多列索引
唯一索引
空间索引

Group by

后面接条件时用having

一般与cout()函数一起使用,实现查询重复数据功能

查重:

结果

分页查询(limit(mysql) top(sqlserver))

练习:
https://www.nowcoder.com/prac...

解释:limit x, y 表示从x+1行(x从0开始算)开始查询y条数据

公众号

欢迎关注公众号 布尔bl ,分享Java相关信息技术、生活感悟。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72950.html

相关文章

  • 【推荐】最新200篇:技术文章整理

    摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...

    BicycleWarrior 评论0 收藏0
  • 【推荐】最新200篇:技术文章整理

    摘要:作为面试官,我是如何甄别应聘者的包装程度语言和等其他语言的对比分析和主从复制的原理详解和持久化的原理是什么面试中经常被问到的持久化与恢复实现故障恢复自动化详解哨兵技术查漏补缺最易错过的技术要点大扫盲意外宕机不难解决,但你真的懂数据恢复吗每秒 作为面试官,我是如何甄别应聘者的包装程度Go语言和Java、python等其他语言的对比分析 Redis和MySQL Redis:主从复制的原理详...

    tommego 评论0 收藏0
  • Android-Java面试

    摘要:好不容易在月号这天中午点左右接到了来自阿里的面试电话。这里会不断收集和更新基础相关的面试题,目前已收集题。面试重难点的和的打包过程多线程机制机制系统启动过程,启动过程等等扫清面试障碍最新面试经验分享,此为第一篇,开篇。 2016 年末,腾讯,百度,华为,搜狗和滴滴面试题汇总 2016 年未,腾讯,百度,华为,搜狗和滴滴面试题汇总 各大公司 Java 后端开发面试题总结 各大公司 Jav...

    TalkingData 评论0 收藏0
  • 墙裂推荐:搜云库技术团队,面试必备的技术干货

    摘要:今天整理了一下近大半年以来的一些文章,和我的预期一样,很多文章我都忘记自己曾经写过了,这个记录的过程让我也有了新的理解。希望大家,收藏,点赞,加转发。 今天整理了一下近大半年以来的一些文章,和我的预期一样,很多文章我都忘记自己曾经写过了,这个记录的过程让我也有了新的理解。希望大家,收藏,点赞,加转发。 面试必备 面试必备:深入Spring MVC DispatchServlet 源码...

    SegmentFault 评论0 收藏0

发表评论

0条评论

tabalt

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<