0
点赞
收藏
分享

微信扫一扫

数据库常见面试题

凉夜lrs 2022-03-12 阅读 70

一 数据库的隔离级别有几个?

1.读未提交,最低级别

2.读已提交,可以防止脏读

3.可重复读,可以防止脏读、不可重复读

4.串行话,可以避免脏读、不可重复读、幻读

什么是脏读、不可重复读、幻读????

脏读就是一个事务读取到另外一个事务未提交的数据,可能引发数据库中的数据回滚。

不可重复读就是一个事务先读取一次数据,另一个事务修改数据,第一个事务读取数据发现不一致了。

幻读就是两个事务操作数据库,第一次读取数据和第二次的数据不一样,缺少了或者增加了数据。

不可重复读重在数据被修改,幻读重在对数据进行了添加或删除。

二 数据库存储的方式有几种

1.冷备份

定期的将数据库中的数据进行转储

2.热备份

当主数据库宕机,从数据库从主数据库发生问题之前的二进制日志中备份

3.双机热备

数据库互为主从,提升数据库的高可用,当一个数据库发生问题后另一个数据库立马启动,防止发生雪崩现象。

三 Sql注入是什么,怎么防止?

Sql注入就是当我们的sql语句是拼接的方式的时候,别人可以通过添加全真操作读取数据库中的所有数据,数据库数据不安全 例如:"select * from students where id = "+id ,其中的id是一个参数,用户传入 1 or 1=1,那么就可以拿到所有数据。正确应该是"select * from students where id = ?",用?进行占位。

防止sql注入用的是占位符的方式,主要就是调用prepareStatement对象,先把sql框架提交给数据库服务器,咱把参数单独提交给数据库。

四 sql优化

1.尽量不要使用*,使用字段名

2.用in代替or

3.尽量不要使用子查询,使用联接查询的方式,小表join大表

4.尽量不要使用order by

5.索引不能超过6个

6.尽量使用中间表(两个表之间的关系表)

7.使用explain查询sql语句的性能

五 事务

事务是数据库操作的逻辑单位,它的特性是ACID。

原子性:要么全部执行,要么全部不执行

一致性:操作数据后,数据库也要发生变化,比如银行存钱,存入后,银行卡余额也要改变

隔离性:一个事务操作数据库的时候,另一个事务不能够操作

持久性:存储在数据库中的数据长期有效

举报

相关推荐

0 条评论