安装步骤
我的文章
https://blog.csdn.net/UnicornRe/article/details/117657298
mysql连接命令
mysql -uroot -p -h x.x.x.x -P 3306
备份:
mysqldump -h 地址 -u用户名 -p密码 otc_v1 >/x/x/backup.sql
优化
- 避免使用!=,<>
- 会用索引的符号
<,<=,=,>,>=,BETWEEN,IN,x%
- 避免判断null
- 避免使用or
select * from teacher where id=1 UNION all select * from teacher where id=2
# 使用UNION时,MySQL会把结果集中重复的记录删掉,而使用UNION ALL ,MySQL会把所有的记录返回,且效率高于UNION
- 避免前置%x,使用 x%
- 尽量用between代替in ,not in
- 避免在 ‘=’ 左边使用算数运算
- 联表查询
<!-- 方案 1
select c.*,p.name parentName
from sys_menus c left join sys_menus p
on c.parentId=p.id
-->
<!-- 方案 2 (推荐)-->
select c.*,(
select p.name
from sys_menus p
where c.parentId=p.id
) parentName
from sys_menus c
# 联表举例
select
teacher.name,(select teacher_class.class from teacher_class where teacher_class.teacherId=teacher.id)
from teacher where teacher.id=1
事务4种特性和4种级别
特性
原子性(Atomicity):一个事务必须被视为一个不可分割的单元,对于其数据修改,要么全都执行,要么全都不执行
一致性(Consistency):数据库总是从一种状态切换到另一种状态,事务在完成时,必须使所有的数据保持一致的状态
隔离性(Isolation):由并发事务所做的修改必须与任何其他并发事务所做的修改隔离
持久性(Durablity):一旦事务提交,所做修改永久保存在数据库
隔离级别
1-4效率依次降低
1、Read uncommitted (读未提交):最低级别,任何情况都无法保证
2、Read committed (读已提交):可避免脏读的发生。oracle默认
3、Repeatable read (可重复读):可避免脏读、不可重复读的发生。mysql默认
4、Serializable (串行化):可避免脏读、不可重复读、幻读的发生
#设置级别
SET SESSION TX_ISOLATION='READ-COMMITTED';
BEGIN;
#事务内容...
commit;/rollback;
脏读&不可重复读&幻读
脏读
读取到其他事务未提交的数据
不可重复读
不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响,
比如其他事务改了这批数据并提交了。通常针对数据**更新(UPDATE)**操作。
幻读
幻读是针对数据**插入(INSERT)**操作来说的。假设事务A对某些行的内容作了更改,但是还未提交,此时
事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了,而这时,在事务A中查询,
会发现好像刚刚的更改对于某些数据未起作用,但其实是事务B刚插入进来的,让用户感觉很魔幻,感觉出现了
幻觉,这就叫幻读。