MySQL
MySQL优化
1、优化SQL语句
2、选取最适和的字段属性
3、使用连接代替子查询
4、使用联合来代替手动创建临时表
5、事务
6、使用外键
7、使用索引
MySQL传播机制
PROPAGATION_REQUIRED:
**支持当前事务,如果当前没有事务,就新建一个事务。**也就是说业务方法需要在一个事务中运行,如果业务方法被调用时,调用业务方法的行为(方法)已经处在一个事务中,那么就加入到该事务,否则为自己创建一个新的事务(默认传播属性)。
PROPAGATION_SUPPORTS:
**支持当前事务,如果当前没有事务,就以非事务方式执行。**也就是说如果业务方法在某个事务范围内被调用,则该方法成为该事务的一部分。如果业务方法在事务范围外被调用,则该方法在没有事务的环境下执行。
PROPAGATION_MANDATORY:
**支持当前事务,如果当前没有事务,就抛出异常。**也就是说业务方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果业务方法在没有事务的环境下被调用,容器就会抛出例外。
PROPAGATION_REQUIRESNEW:
**新建事务,如果当前存在事务,把当前事务挂起。**也就是说业务方法被调用时,不管是否已经存在事务,业务方法总会为自己发起一个新的事务。如果调用业务方法的行为(方法)已经运行在一个事务中,则原有事务会被挂起,新的事务会被创建,直到业务方法执行结束,新事务才算结束,原先的事务才会恢复执行。
PROPAGATION_NOT_SUPPORTED:
**以非事务方式执行,如果当前存在事务,就把当前事务挂起。**也就是说业务方法不需要事务。如果方法没有被关联到一个事务中,容器不会为它开启事务。如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会恢复执行。
PROPAGATION_NEVER:
**以非事务方式执行,如果当前存在事务,则抛出异常。**也就是说业务方法绝对不能在事务范围内执行。如果业务方法在某个事务中执行,容器会抛出例外,只有业务方法没有关联到任何事务,才能正常执行。
PROPAGATION_NESTED:
如果一个活动的事务存在,则运行在一个嵌套的事务中。 如果没有活动事务, 则按REQUIRED属性执行。它使用了一个单独的事务, 这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。
MySQL隔离级别
ISOLATION_DEFAULT
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。每种数据库的默认隔离级别是不同的,例如SQL Server、Oracle默认Read Commited,MySQL默认Repeatable Read。另外四个与JDBC的隔离级别相对应,不同的隔离级别采用不同的锁类型来实现,在四种隔离级别中,Serializable的隔离级别最高,Read Uncommited的隔离级别最低。
ISOLATION_READ_UNCOMMITTED
读未提交数据,这是事务最低的隔离级别,在并发的事务中,它充许一个事务可以读到另一个事务未提交的更新数据。(会出现脏读,不可重复读和幻读)
ISOLATION_READ_COMMITTED
读已提交数据,保证在并发的事务中,一个事务修改的数据提交后才能被另外一个事务读取到。(会出现不可重复读和幻读)
ISOLATION_REPEATABLE_READ
可重复读,这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻读。一般是采用“快照”的方式来实现的。
ISOLATION_SERIALIZABLE
**事务被处理为顺序执行。这是花费最高,但也是最可靠的事务隔离级别。**能有效的避免脏读、不可重复读、幻读。
为什么要使用Spring Booth2>
Spring Boot一个基于Spring框架的扩展,它消除了Spring应用程序所需要的繁杂配置,更快,更高效。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93917 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!