- sql优化
(1)建立索引,分区
(2)避免,where字段判null,函数,like,<>,or,in(可以用between,exists),not in等,会导致索引失效
(3)explain - 事务和事务隔离级别
事务指的是一组数据库操作,事务内的操作要么全部成功,要么全部失败,只要一部分失败就回滚所有操作
级别:
脏读,读到了其他事务未提交的数据
可重复读,在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的数据都是一致的,常用于更新操作
不可重复读,在同一事务内独到的数据可能是不一样的
幻读,A对一行做更改,B插入与该行更改前相同的数据,B先提交,在A中查询会发现更改未起作用
SQL 标准定义了四种隔离级别:
读未提交(READ UNCOMMITTED)
读提交 (READ COMMITTED)
可重复读 (REPEATABLE READ)
串行化 (SERIALIZABLE) - mysql缓存机制
(1)一级缓存,也称本地缓存,sqlsession级别的缓存。一直开启,数据库同一次会话期间查询到的数据放在本地缓存中
失效情况:
sqlsession不同、
sqlsession相同+查询条件不同、
sqlsession相同+在两次相同查询条件中间执行过增删改操作
sqlSession相同,手动清空了一级缓存
(2)二级缓存,也称全局缓存,基于namespace级别的缓存
查出的数据首先放在一级缓存中,只有一级缓存被关闭或者提交以后,一级缓存数据才会转移到二级缓存
和缓存相关的配置/属性:
1.cacheEnabled:如果是false,关闭二级缓存,不关闭一级缓存。
2.每个select标签都有userCache="true"属性:对一级缓存没有影响。设置为false,二级缓存失效。
3.每个增删改标签都有flushCache="true"属性:一级缓存和二级缓存都会被清空。
4.在查询标签中flushCache="false"属性:如果设置为true,查完会清空,
一级二级缓存都会被清空,都不会用缓存。
5.sqlSession.clearn():跟session有关,只会清除一级缓存。
6.localCacheScope:
本地缓存作用域。
使用顺序:二级缓存----->一级缓存-------->数据库。
Mysql
最新推荐文章于 2023-07-21 07:56:54 发布