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数据文件就是索引文件,主键索引就是聚集索引