Java学习知识点小结8(数据库)

1.事务:事务指的是满足 ACID 特性的一组操作(insert,update,delete)
这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位

2.ACID:
原子性:事务的所有操作要么全部提交成功,要么全部失败回滚。回滚使用回滚日志实现
一致性:数据库在事务执行前后都保持一致性状态
隔离性:一个事务所做的修改在最终提交以前,对其它事务是不可见的
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失

3.并发不一致:丢失修改,读脏数据,不可重复读,幻影读

4.可以通过封锁实现并发不一致问题:读写锁(互斥锁X,共享锁S),意向锁

5.事务隔离级别
未提交读(READ UNCOMMITTED):事务中的修改,即使没有提交,对其它事务也是可见的。
提交读(READ COMMITTED):一个事务只能读取已经提交的事务所做的修改。(Mysql默认级别)
可重复读(REPEATABLE READ):保证在同一个事务中多次读取同一数据的结果是一样的。(oracle默认级别)
可串行化(SERIALIZABLE):强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题,需要加锁实现

5.SQL优化:对查询进行优化,应尽量避免全表扫描,首先应该考虑在where和order by涉及列上建立索引

6.innoDB引擎:支持事务,支持外键,innoDB是聚集索引,innoDB不保存表的具体行数,innoDB不支持全文索引。

7.索引
普通索引
CREATE INDEX [index name] ON [table name] (column(length))
ALTER TABLE [table name] ADD INDEX [index name] (column(length))

唯一索引:索引列必须唯一,但允许有空值(主键索引则不允许有空)
CREATE UNIQUE INDEX [index name] ON [table name] (column(length))

全文索引:仅可用于MySIAM表
CREATE FULLTEST INDEX [index name] ON [table name] (column)

组合索引:最左前缀(当查询语句要包含最左的column1时才走索引)
CREATE INDEX [index name] ON [table name] (column1,column2)

查看索引:SHOW INDEX FROM [table name]
删除索引:DROP INDEX [index name] ON [table name]

8.索引的优化
索引不会包含有NULL值的列,所以再创建表时给字段默认值
使用短索引,即指定column(length)
不要在列上进行运算,会在每个行上进行运算,导致全表扫描
Mysql只对以下操作符使用索引:<>=,between,in,(不以通配符%开头的)like

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值