发表于: 2017-08-10 23:25:05

1 1003


今天完成的事情:
1.还是一样每天早上投投简历,伤心的是,海投的60个职位中,有59个是已投递的。。。。
2.学习数据库中的事务:
事务举例说明:
在一个事务中A转账到B ,你写了2条sql语句,第一条A的账户上扣了100块钱,第二条B的账户上加了100块钱,这两条都完成的话才算是这一个转账的操作完成。如果只完成了第一条或者第二条的话,这个就会出现问题,导致A扣钱了但是B没有到账,或者B到账了A没有扣钱。
这时就需要事务管理,如果出现错误的话,就会回滚到开始。
事务就是要么全执行,要么全部不执行,回到原始数据状态。
书面解释:事务具有原子性,一致性,隔离性,持久性。
- 原子性:事务必须是一个自动工作的单元,要么全部执行,要么全部不执行。
- 一致性:事务结束的时候,所有的内部数据都是正确的。

- 隔离性:并发多个事务时,各个事务不干涉内部数据,处理的都是另外一个事务处理之前或之后的数据。

数据库的四大特性:

- 持久性:事务提交之后,数据是永久性的,不可再回滚
然而在SQL Server中事务被分为3类常见的事务:
- 自动提交事务:是SQL Server默认的一种事务模式,每条Sql语句都被看成一个事务进行处理,你应该没有见过,一条Update 修改2个字段的语句,只修该了1个字段而另外一个字段没有修改。。
- 显式事务:T-sql标明,由Begin Transaction开启事务开始,由Commit Transaction 提交事务、Rollback Transaction 回滚事务结束。
- 隐式事务:使用Set IMPLICIT_TRANSACTIONS ON 将将隐式事务模式打开,不用Begin Transaction开启事务,当一个事务结束,这个模式会自动启用下一个事务,只用Commit Transaction 提交事务、Rollback Transaction 回滚事务即可。
事务的四种隔离级别:
以上四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。像Serializable这样的级别,就是以锁表的方式(类似于Java多线程中的锁)使得其他的线程只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。在MySQL数据库中默认的隔离级别为Repeatable read (可重复读)。
  在MySQL数据库中,支持上面四种隔离级别,默认的为Repeatable read (可重复读);而在Oracle数据库中,只支持Serializable (串行化)级别和Read committed (读已提交)这两种级别,其中默认的为Read committed级别。
由于MySQL中默认的是Repeatable read(可重复读)这一级别,如果想加深印象,可以进命令行进项操作修改事务隔离的级别,来进行加深理解。
3.mysql中索引的一般常用的存索引类型以及索引方法:
索引类型一般是Normal,索引方法一般是B+tree,还有一种是hash
normal:表示普通索引
unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。
索引的方式:
1、BTREE(B树(可以是多叉树)) {主流使用,据说99%}

2、HASH(key,value) 这种方式对范围查询支持得不是很好


明天计划的事情:
今天晚上看的spring的AOP,明天代码实际操作一波,加深理解,明天再来总结。


遇到的问题:

spring AOP中的动态代理这一块还没有理解清楚,需要代码实战演练一下。


总结:

今天看起来做的事情有点多,这些都是从博客上看来了,需要自己吸收,消化,一直在云里雾里的AOP有一些理解了。
 






返回列表 返回列表
评论

    分享到