数据库面试题

 JDBC中的PreparedStatement相比Statement的好处

1、PreparedStatement是预编译的,比Statement速度快 

2、代码的可读性和可维护性

虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次:

3、安全性

PreparedStatement可以防止SQL注入攻击,而Statement却不能。

 

数据库连接池作用

1、限定数据库的个数,不会导致由于数据库连接过多导致系统运行缓慢或崩溃

2、数据库连接不需要每次都去创建或销毁,节约了资源

3、数据库连接不需要每次都去创建,响应时间更快。

 

Mybatis工作原理解析


mybatis应用程序通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件(也可以用Java文件配置的方式,需要添加@Configuration)来构建SqlSessionFactory(SqlSessionFactory是线程安全的);

然后,SqlSessionFactory的实例直接开启一个SqlSession,再通过SqlSession实例获得Mapper对象并运行Mapper映射的SQL语句,完成对数据库的CRUD和事务提交,之后关闭SqlSession
 

 

简述标准SQL规范中定义的4个事务隔离级别及其具体含义。

1.未提交读:

即使一个更新语句未提交,但是其他别的事务可以读到这个改变

2.提交读:(MS SQL server , )

执行了commit操作后别的事物能读到这个改变,并且只能读取到已经提交的数据

3.可重复读(MySQL)

在同一个事物里面先后执行一个查询语句的时候,得到的结果是一样的

4.串行读

事物执行的时候不允许别的事物并发执行,完全串行化的读,每次都都需要获得表级共享锁,读写相互都会堵塞。

 

Mysql为什么用B树存储结构

B树
1:叶子节点出现在同一层,叶子节点相互关联并且叶子节点中的树从小到大排列

2:叶子节点才记录数据,非叶子节点只记录索引,一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了

B+树
B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。

mysql的数据是放到外部存储的,因此我们必须减低磁盘的IO次数,因此我们需要尽量降低树的高度,树的分叉越多越好,因此B树正好符合我们的要求

 

什么是聚集索引和非聚集索引 ?(聚簇索引和非聚簇索引)

聚集还是非聚集指的是B+Tree 的叶结点存储数据还是指针

MyISAM索引和数据分离,使用的是非聚集索引

InnoDB数据文件就是索引文件,主键索引就是聚集索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值