MysqL
目录
1.7-jdbc的PreparedStatement相比Statement的好处
1.1-数据库的分类以及常用的数据库
1.2-关系数据库的三范式
范式:范式就是规范,关系型数据库在设计表时,要遵循的三个规范。要想满足第二范式必须先满足第一范式,要满足第三范式必须先满足第二范式
-
第一范式:是指数据库的每一列都是不可分割的基本数据项,同一列中不能有多个值,也就是实体类中的某个属性不能有多个值或者不能有重复的属性,列数据不可分割
-
第二范数:要求数据库中每个实例或行必须可以被唯一区分的,数据库中所有非主键字段完全依赖主键,不能产生部分依赖,以存储各个实例的唯一标识(主键)
1.3-事务的四个基本特征
事务:是一个并发控制的单位,比如是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位
事务必须满足四大特征:
-
原子性:表示操作事务内操作不可分割,要们都成功,要们都失败
-
一致性:要么成功,要们失败,失败了要对前面的操作进行回滚
-
隔离性:一个事务开始后,不能背其他的事务干扰
-
持久性/持续性:表示事务开始了,就不能终止
1.4-MysqL数据库的最大连接数
特定服务器上面的数据库只能支持一定数目同时连接,这时我们一般都会设置最大连接数(最多同时服务多少连接),在数据库安装时都会有一个默认的最大连接数。
最大连接数为100
1.5-对jdbc的理解
Java只定义接口,让数据库厂商自己实现接口,对于开发而言,只需要导入对应厂商开发的实现即可,然后以接口实现即可,然后进行调用(MysqL+MysqL驱动(实现)+jdbc)
1.6-jdbc怎么调用存过程
public static void test() throws ClassNotFoundException, sqlException{
String driver = "com.MysqL.cj.jdbc.Driver";
String url = "jdbc:MysqL://127.0.0.1:3306/ssmidea?serverTimezone=UTC
String user = "root";
String password = "root";
//1.注册驱动
Class.forName(driver);
//2.建立连接
Connection conn=DriverManager.getConnection(url,user,password);
//3.创建语句执行对象
Statement st=conn.createStatement();//创建Statement
//4.执行语句
ResultSet rs=st.executeQuery("select * from user");
//5.处理结果
while(rs.next()){
System.out.print(rs.getobject(1)+"\t"+rs.getobject(2)+"\t"+rs.getobject(3)+"\t");
}
//6.释放资源,资源rs、st、conn的释放顺序与创建顺序相反
rs.close();
st.close();
conn.close();
}
1.7-jdbc的PreparedStatement相比Statement的好处
1.8-数据库连接池的作用
1:限定数据库连接的个数,不会导致由于数据库连接过多导致系统运行缓慢或者崩溃
2:数据库连接不需要每次都去创建或者销毁,节约了资源
3:数据库连接不需要每次都要去创建,响应时间更快
1.9-数据库优化手段
-
分表:当一张表的数据比较多或一张表的某些字段的值比较多,并且很少使用时,采用水平分表和垂直分表来优化
-
读写分离:当一台服务器不能满足需求时,采用读写分离的方式进行集群
-
缓 存:使用redis来进行缓存
-
一些常用的优化技巧
1.10-查找并定位慢查询
在项目自验项目转测试之前,在启动MysqL数据库时开启慢查询,并且把执行慢的语句写到日志中,在运行一定的时间后,通过查看日志找到慢查询语句
使用explain慢查询语句,来详细分析语句的问题
1.11-数据库分表
数据库分表有水平(按行)分表和垂直(按列)分表
MysqL数据表一般达到百万级别,查询效率会非常低,容易造成表锁,甚至堆积很多连接,直接挂掉,水平分表能够很大程度减少这些压力
1.12-MysqL事务的隔离级别
1.13-什么是脏读?什么是幻读?
- 脏读:脏读是指当一个事务正在访问数据,并且对数据进行了修改。而这种修改还没有提交到数据库中,这时,另外一个事务也访问了这个数据,然后使用了这个数据。
- 幻读:幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到了表中的全部数据行。同时,第二个事务也修改了这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好像发生了幻觉一样。
- 不可重复读:一个事务多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A每次读取同一数据时,结果不一致。
1.14-选择合适的数据库存储引擎
开发中,我们经常使用的是MyISAM/innodb/memory
MyISAM引擎:
如果表对事务的要求不高,同时是以查询和添加为主的,我们考虑使用MyISAM存储引擎
innodb引擎:
对事务要求高,保存的数据都是重要的数据,我们建议使用INNODB
memory引擎:
我们数据变化频繁,不需要入库,同时又频繁的查询和修改,我们考虑使用memory,速度极快
1.15-MyISAM和innodb的区别
1.15-Innodb有哪些特性
-
一:插入缓冲
-
二:二次写
-
三:自适应哈希
-
四:预读