为了账号安全,请及时绑定邮箱和手机立即绑定
  • http://img1.sycdn.imooc.com//5f9aa91100015f8b18200868.jpghttp://img1.sycdn.imooc.com//5f9aacb20001bf9517440838.jpghttp://img1.sycdn.imooc.com//5f9aac9e0001415c18100874.jpg

    acid:事务

    事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性;

    一、原子性(atomicity)

    一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性

    二、一致性(consistency)

    事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。

    如果数据库系统在运行过程中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所作的修改有一部分已写入物理数据库,这是数据库就处于一种不正确的状态,也就是不一致的状态

    三、隔离性(isolation)

    事务的隔离性是指在并发环境中,并发的事务时相互隔离的,一个事务的执行不能不被其他事务干扰。不同的事务并发操作相同的数据时,每个事务都有各自完成的数据空间,即一个事务内部的操作及使用的数据对其他并发事务时隔离的,并发执行的各个事务之间不能相互干扰。

    在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同,分别是:未授权读取,授权读取,可重复读取和串行化

    1、读未提交(Read Uncommited),该隔离级别允许脏读取,其隔离级别最低;比如事务A和事务B同时进行,事务A在整个执行阶段,会将某数据的值从1开始一直加到10,然后进行事务提交,此时,事务B能够看到这个数据项在事务A操作过程中的所有中间值(如1变成2,2变成3等),而对这一系列的中间值的读取就是未授权读取

    2、授权读取也称为已提交读(Read Commited),授权读取只允许获取已经提交的数据。比如事务A和事务B同时进行,事务A进行+1操作,此时,事务B无法看到这个数据项在事务A操作过程中的所有中间值,只能看到最终的10。另外,如果说有一个事务C,和事务A进行非常类似的操作,只是事务C是将数据项从10加到20,此时事务B也同样可以读取到20,即授权读取允许不可重复读取。

    3、可重复读(Repeatable Read)

    就是保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻是一致的,因此该事务级别禁止不可重复读取和脏读取,但是有可能出现幻影数据。所谓幻影数据,就是指同样的事务操作,在前后两个时间段内执行对同一个数据项的读取,可能出现不一致的结果。在上面的例子中,可重复读取隔离级别能够保证事务B在第一次事务操作过程中,始终对数据项读取到1,但是在下一次事务操作中,即使事务B(注意,事务名字虽然相同,但是指的是另一个事务操作)采用同样的查询方式,就可能读取到10或20;

    4、串行化

    是最严格的事务隔离级别,它要求所有事务被串行执行,即事务只能一个接一个的进行处理,不能并发执行。

    四、持久性(durability)

    一旦事务提交,那么它对数据库中的对应数据的状态的变更就会永久保存到数据库中。--即使发生系统崩溃或机器宕机等故障,只要数据库能够重新启动,那么一定能够将其恢复到事务成功结束的状态


    查看全部
  • create external table table2(
    id int,name string,interest array<string>,
    score map<string,string>)
    row format delimited fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':' location '/testtable';
    
    desc formatted table2;

    创建分区表

    create external table table2(
    id int,name string,interest array<string>,
    score map<string,string>)
    partitioned by (year int)
    row format delimited fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':' stored as textfile;
    
    load data local inpath 'root/testdata.txt' into table
    table3 partition(year=2018);
    
    show partitions tables;
    
    alter table table3 add partition(year=2019) 
    location '/testtable';
    
    show partitions table3;
    
    alter table table3 drop partition(year=2019);


    查看全部
  • Orc vs Parquet的区别

    查看全部
  • 列式存储优点

    查看全部
  • OrcFile存储格式

    查看全部
  • 行式存储

    查看全部
  • 列式存储

    查看全部
  • Hive存储格式

    查看全部
  • alter table table1 drop partition(year=2019) 删除指定分区表

    查看全部
  • 检索固定分区表,需加上分区字段

    查看全部
  • 加载数据到分区表的两种方式

    查看全部
  • 创建分区表"create external table tables(字段、...) partitioned by(字段)"

    分区是为了缩小查询范围、减少查询时间、提升查询效率

    查看全部
  • 内部表和外部表的区别

    内部表:删除表,元数据被删掉,文件不存在

    外部表:删除表,元数据被删掉,文件还存在

    查看全部
  • desc formatted table2 查看table2的相关信息

    查看全部
首页上一页123下一页尾页

举报

0/150
提交
取消
课程须知
本课程是对Presto的介绍与实战,课程的项目开发基于Python Flask框架,但对于Flask框架应用无过多介绍,需要同学有一定的了解,因Python代码本身相对简单,亦可边看代码边学。
老师告诉你能学到什么?
1、Hive的基本概念与基础操作 2、Sqoop的基础操作和Gobblin的设计方案 3、Presto的架构及代码操作

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!