1 事务
1.1 事务ACID原则
原子性(Atomicity)
事务的原子性指的是事务的操作,要么全部成功,要么全部失败回滚
一致性(Consistency)
事务的一致性是指事务必须使数据库从一个一致状态转变成另一个一致性状态
比如,假设A 和 B 两者存款的和为5000,那么他们两个人之间无论怎么转账,他俩的存款加起来还是5000,这就是事务的一致性
隔离性(Isolation)
事务的隔离性指的是当多个用户并发访问数据库时,比如操作同一张表,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
持久性
事务的持久性指的是,一个事务一旦被提交了,那么它对数据库的改变就是永久的
2 存储过程
由Mysql5.0版本开始支持存储过程
2.1 什么是存储过程
当需要实现用户的一些需求时,需要编写一组复杂SQL语句才能实现,并且需要多次使用,那么我们可以提前将这组SQL语句提前编写在数据库中,由JDBC进行调用执行。我们把编写在数据库中的SQL语句集称作为存储过程
就是数据库SQL语言层面的代码封装
2.2 优点
- 简化了复杂操作。
- 简化了对变动管理。有变化只需要修改存储过程中的代码,使用的人不必变动
- 有助于提高应用程序的性能。当存储创建编译后,就存储在数据库缓存中
- 有助于减少应用程序和数据库服务器之间的流量。因为应运程序不必发送多个复杂的SQL语句,只需要发送存储过程中的名称和参数即可
- 可重用和透明
- 安全性
2.3 缺点
- 如果使用大量的存储过程,那么使用这些存储过程的每个连接的内存使用量将大大增加
- MySQL不提供调试存储过程的功能
- 开发和维护不容易
- 对数据库依赖程度高,移植性差
3 SQL优化
提到SQL优化,首先我们得明白,如何找到需要优化的语句
- 观察服务器状态,一般用如下2个命令,Show status; Show processlist
- 也可以通过Druid对数据库监控进行观察
- 也可以通过记录慢查询日志观察(EXPLAIN查看执行计划)
3.1 如何进行SQL语句优化
参考该博客
SQL语句优化的30种方法,总结的太棒了