1 概述 本文档制定了XX数据仓库中数据库对象的命名规范(用户、表、视图、存储过程、函数、表分区、主键、索引、序列等)、数据库编程规范,JAVA编程规范为系统设计和开发工作提供统一的命名标准,提高系统的规整性和代码的可读性...视图、存储过程、函数命名规范 [_汇总类型][_存储类型] 说明: 尖括号中的内容为必须项,适用于所有用户层对象,[] 方括号中的内容为可选项,会因用户层及对象的不同而不同...缩进格数统一为 4 格。 必须使用空格,禁止使用TAB键。 同一条语句占用多于一行时,每行的第一个关键字应当右对齐。...超过80字符的语句要分行书写,长表达式应在低优先级操作符处换行,操作符或关键字放在新行之首。划分出的新行应适当地缩进,使排版整齐,语句可读。...5.6 分区管理规范 分区表的分区增加、分区删除操作,统一由分区控制程序完成,应用数据处理程序中不允许包含增加、删除分区的操作;分区表清空分区的操作,应在应用数据处理程序中进行,这样可以避免因为程序多次运行导致的数据重复
REAPEATABLE READ(可重复读):REAPEATABLE READ 解决了脏读的问题,该级别保证了在同一个事务中多次读取同样记录的结果是一致的。...不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作。 MVCC 只在 REPEATABLE 和 READ READ COMMITTED 两个隔离级别下工作。...存储 MyISAM 会将表存储在两个文件中:数据文件和索引文件,分别以 .MYD 和 .MYI 为扩展名。MyISAM 表可以包含动态或者静态(长度固定)行。...创建与查询 第三种转换的技术综合了第一种方法的高效和第二种方法的安全,不需要导出整个表的数据,而是先创建一个新的存储引擎的表,然后利用 INSERT ··· SELECT 语法来导数据: mysql>...如果有必要,可以在执行的过程中对原表加锁,以确保新表和原表的数据一致。
可重复读: 保证了同一个事务中多次读取同样的记录,结果都是一致的。...,主要有以下两种: 乐观并发控制 悲观并发控制 InnoDB的MVCC是通过在每行记录后面保存两个隐藏列实现的,这两个列,一个保存了行的创建时间,一个保存行的过期时间(或删除时间)。...每开始一个新的事务,系统版本号都会自增,事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。...UPDATE InnoDB为插入一行新记录,保存当前系统版本号作为行版本号,同时保存当前系统版本号到原来的行作为删除标识 MVCC只在可重复读和读提交下面生效,其他两个隔离级别都和MVCC不兼容,...注意:mysqldump会自动在create table前面加上drop table语句,不注意这点,可能会导致数据丢失 ---- 创建和查询 先创建一个新的存储引擎的表,然后利用insert…select
图 8-2 这些查询显示在 Excel 的【查询 & 连接】窗格(左)和在 Power Query【查询】导航窗格(右) 8.1.1 追加两个表 下一项工作是创建用于后续分析的整个表,这需要将上述表格追加在一起...图 8-8 在一个步骤中添加多个追加项 或者,如果想要一次执行一个查询,并专注于创建一个易于使用的检查跟踪路径,那么可以在每次向数据源添加一个新的查询时采取如下操作。...8.3 在当前文件中追加表和区域 虽然从外部文件中检索和【追加】数据是很常见的,但 Excel 用户也会使用这种功能来【追加】同一工作簿中的数据表。...每个月,记账员都会勤奋地创建和命名一个新的工作表,并设置和命名该表作为他们月末工作的一部分。他们似乎忽略了一件事,就是把礼品券的发放日期或到期日期放在表中,如图 8-14 所示。...8.3.1 合并表 不幸的是,Excel 中没有按钮可以对当前工作簿中的可见对象创建查询,所以需要去从头开始创建这整个查询,如下所示。 创建一个新的查询【数据】【获取数据】【自其他源】【空白查询】。
但是还是会遇到不可重复读的问题。 REPEATABLE READ(可重复读):Mysql的默认隔离级别,该级别保证了同一个事务中多次读取同样记录的结果是一致的。...但如果该事务需要回滚,非事务型的表上的变更就无法撤销。 InnoDB采用的是两阶段锁定协议,锁只有在COMMIT或者ROLLBACK的时候才会释放,并且所有的锁是在同一时刻被释放。...InnoDB的MVCC,通过在每行记录后面保存两个隐藏列实现,这两个列一个保存行的创建时间,一个保存过期(删除时间),当然这里存储的创建时间不是真正的时间,而是系统版本号。...insert:插入新行的时候,将事务分配到的版本号赋给创建版本号那个列属性。...delete:为删除的每一行保存当前系统版本号为行删除标识,即将该版本号存入删除版本号的那个列属性 update:实际上是新插入一条记录,然后将事务分配到的版本号赋给旧记录的删除版本号列以及新记录的创建版本号列
REPEATABLE READ(可重复读)REPEATABLE READ 解决了脏读的问题。该级别保证了在同一个事务中多次读取同样记录的结果是一致的。...根据事务开始的时间不同,每个事务对同一张表,同一时刻看到的数据可能是不一样的。如果之前没有这方面的概念,这句话听起来就有点迷惑。熟悉了以后会发现,这句话其实还是很容易理解的。...,一个保存了行的创建时间;一个保存行的过期时间(或删除时间);当然存储的并不是实际的时间值,而是系统版本号(system version number)。每开始一个新的事务,系统版本号都会自动递增。...INSERTInnoDB为新插人的每一行保存当前系统版本号作为行版本号。DELETEInnoDB为删除的每一行保存当前系统版本号作为行删除标识。...不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作。MVCC只在REPEATABLE READ和READ COMMITTED两个隔离级别下工作。
image.png 事实上,同步内核主页表的工作只需要将缺页地址对应在内核主页表中的顶级全局页目录项 pgd 同步到进程页表内核部分对应的 pgd 地址处就可以了,正如上图中所示,每一级的页目录项中存放的均是其下一级页目录表的物理内存地址...image.png 由于页目录项所承担的一项最重要的工作就是定位其下一级页目录表的起始物理内存地址,这里的下一级页目录表就是刚刚我们新创建出来的 PUD。...image.png 目前为止,我们只是完善了缺页虚拟内存地址对应在进程页表顶级页目录中的目录项 p4d_t,在四级页表体系下,我们还需要继续向下逐级的去补齐虚拟内存地址对应在其他页目录中的目录项,处理逻辑上都是一模一样的...创建一个临时的页表项 entry,然后让 entry 指向新的内存页,将 entry 重新设置为可写,通过 set_pte_at_notify 将 entry 值设置到子进程页表中的 pte 上。...由于产生了新的物理内存页,所以就要创建新的 pte 来映射这个物理内存页,然后将新的 pte 设置到页表中,替换原来的 swp_entry_t。
举个例子: 表中有一条数据,ID=1 Salary=1000 事务A:读取ID=1的Salary,此时读取到的值为1000 事务B:读取ID=1的Salary,此时读取到的值为1000 事务A:...根据事务开始的时间不同,每个事务对同一张表,同一时刻看到的数据可能是不一样的。当然每个存储引擎实现的MVCC是不一样的,下面以InnoDB引擎来详细展开。...InnoDB的MVCC是通过在每行的记录后面保存两个隐藏的列来实现,其中一个列保存了行的创建时间,一个保存了行的过期时间(或)删除时间。当然存储的并不是实际的时间值,而是系统版本号。...每开始一个新的事务,版本号都会自动递增,事务开始时的版本号会作为事务的版本号,用于和查询到的每行记录的版本号进行比较。...正是因为保存了这两个额外的系统版本号,使得大多数的都操作都不用加锁,性能也得到了提高,但是缺点就是每行记录都需要额外的存储空间,以及版本号的维护工作。
幻读和不可重复读的区别: 不可重复读的重点是修改:在同一事务中,同样的条件,第一次读的数据和第二次读的数据不一样。...REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。...下边通过 InnoDB的简化版行为来说明 MVCC 是如何工作的。 InnoDB 的 MVCC,是通过在每行记录后面保存两个隐藏的列来实现。...每开始一个新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。...不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作和一些额外的维护工作。
注:内容有点干,但希望你可以耐心地看完。回头我写一篇实操的文章帮助理解。 开发工作中我们会使用到事务,那你们知道事务又分哪几种吗? 以及不同事务隔离的加锁实现原理是什么?...这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理期间可能会有新的commit,所以同一select可能返回不同结果。...MySQL中锁的种类: MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做...接下来讲解MVCC在MySQL的InnoDB中的实现: 在InnoDB中,会在每行数据后添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除...通过MVCC,虽然每行记录都需要额外的存储空间,更多的行检查工作以及一些额外的维护工作,但可以减少锁的使用,大多数读操作都不用加锁,读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行,也只锁住必要行
而且这种情况下,属于同一行的数据都在同一个 HDFS 块上,重建一行数据的成本比较低。...,很大程度上节约了存储空间,尤其是字段中包含大量重复数据的时候。...创建 Hive 事务表的方法: 设置 hive 环境参数: --开启并发支持,支持插入、删除和更新的事务 set hive.support.concurrency=true; --支持ACID事务的表必须为分桶表...注:在 Hive 中使用布隆(bloom)过滤器,可以用较少的文件空间快速判定数据是否存在于表中,但是也存在将不属于这个表的数据判定为属于这个这表的情况,这个情况称之为假正概率,可以手动调整该概率,但概率越低...parquet.dictionary.page.size:默认值为 1048576byte,即 1MB。在使用字典编码时,会在 Parquet 的每行每列中创建一个字典页。
分层是以解决当前业务快速的数据支撑为目的,为未来抽象出共性的框架并能够赋能给其他业务线,同时为业务发展提供稳定、准确的数据支撑,并能够按照已有的模型为新业务发展提供方向,也就是数据驱动和赋能。...为什么要提相同粒度呢,因为维度建模中要求我们,在同一事实表中,必须具有相同的粒度,同一事实表中不要混用多种不同的粒度,不同的粒度数据建立不同的事实表。...,并且要确保维度表中不能出现重复数据,应使维度主键唯一 4、确认事实 事实表是用来度量的,基本上都以数量值表示,事实表中的每行对应一个度量,每行中的数据是一个特定级别的细节数据,称为粒度。...维度建模的核心原则之一是同一事实表中的所有度量必须具有相同的粒度。这样能确保不会出现重复计算度量的问题。有时候往往不能确定该列数据是事实属性还是维度属性。记住最实用的事实就是数值类型和可加类事实。...数据明细层 事实表中的每行对应一个度量,每行中的数据是一个特定级别的细节数据,称为粒度。维度建模的核心原则之一是同一事实表中的所有度量必须具有相同的粒度。这样能确保不会出现重复计算度量的问题。
2)表输入 创建好数据库连接以后,我们就可以使用表输入控件了,双击表输入控件,选择刚刚创建的数据库连接,然后在SQL框里输入合适的查询语句,然后点击预览按钮,看能否预览到我们期望的数据 3.2 Kettle...3.2.4 表输出 表输出控件可以将kettle数据行中的数据直接写入到数据库中的表中,企业里做ETL工作会经常用到此控件。...1.选择合适的数据库连接 2.选择目标表,目标表可以提前在数据库中手动创建好,也可以输入一个数据库不存在的表,然后点击下面的SQL按钮,利用kettle现场创建 3.如果目标表的表结构和输入的数据结构不一致...name字段,然后再将数据插入到新表emp中 原始数据: 3.3.2 值映射 值映射就是把字段的一个值映射(转换)成其他的值。...” –旧数据中有而新数据中没有的记录 4.关键字段:用于定位判断两个数据源中的同一条记录的字段。
为避免数据不一致,可: 借助DB内置机制 或通过显式加锁、执行原子写操作 但这还不算并发写可能引发的全部问题。 为医院写一个值班管理程序。医院通常会同时要求几个医生待命,前提是至少有一位医生在待命。...但为指定至少有一名医生必须在线,涉及多个对象的约束,大多DB都未内置这种约束,但你可使用触发器或物化视图来实现类似约束 若无法使用可串行化,则次优方案可能是显式锁定事务依赖的行: BEGIN TRANSACTION...如会议室预订案例,想象创建一个关于时间槽和房间的表。此表中的每行对应于特定时间段(如 15min)的特定房间。可提前插入房间和时间的所有可能组合行(例如接下来的六个月)。...现在,要创建预订的事务可以锁定(SELECT FOR UPDATE)表中与所需房间和时间段对应的行。锁定后,它可检查重叠预订并像以前一样插入新预订。...该表不是用来存储预订相关信息的,它完全就是一组锁,以防止同时修改同一房间和时间范围内的预订。
逆透视列选择确认 一般性Excel插件无需此设置,看似操作简单了,但最终生成的结果表却是无意义的列标题,需手动更改过来,此表的每一项设置都是为了告诉程序我们的数据源的结构是如何的,及我们目标结果表中需要如何定义生成的新列的名称...列字段源表头区域 因源数据是同一数据列类型多次重复出现,此处需要把同一数据类型的列给选择上,让程序知道要把这些列都合并成一个新列并给予前面所定义的名称作为新列名称,此部分多级表头部分程序自动识别无需人工选择...选择多列的数据(选列标题即可,按住Ctrl可选多个间隔开的列),此时区域会出现逗号(,)或冒号(:),此时程序识别为人工已经选择了所有同一类型的数据列,无需使用后两项再进行逻辑加工出所有同一类型的数据列...总结 专业人做专业事,人工智能时代,需要不断树立新观念,重复性的有规律的事情尽量让电脑去完成,人要做更有创造性的工作,对多维表转一维表的场景中,若不是插件的辅助,大量无谓的时间花在手工整理数据源上,非常不明智...,希望大家日后再遇到相关的场景时,可以让Excel催化剂帮助减轻大量的工作量,省下时间做更有意义的事情,也欢迎工作中遇到重复性、有规律逻辑性的场景到群里反馈,或许最终可以提炼出插件完成,受惠广大职场人士
如果你使用GLOBAL关键字,语句在全局对从那点开始创建的所有新连接(除了不存在的连接)设置默认事务级别。你需要SUPER权限来做这个。...隔离级别产生的问题 脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据不正确了 不可重复读(...这种方式不会产生循环死锁的问题,但数据库中在事务开始阶段,数据库并不知道会用到哪些数据,所以在数据库中不适用。...MVCC 的实现 在InnoDB中,会在每行数据后添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除)。...通过MVCC,虽然每行记录都需要额外的存储空间,更多的行检查工作以及一些额外的维护工作,但可以减少锁的使用,大多数读操作都不用加锁,读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行,也只锁住必要行
MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,你可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在事务级别提交读和可重复读有效。...而 SERIALIZABLE 则会对所有读取的表都加锁。 MVVC的实现机制 InnoDB在每行数据都增加三个隐藏字段,一个唯一行号,一个记录创建的版本号,一个记录回滚的版本号。...结合聚簇索引的相关知识点,如果表中没有主键或合适的唯一索引,也就是无法生成聚簇索引的时候,InnoDB会帮我们自动生成聚集索引,但聚簇索引会使用DB_ROW_ID的值来作为主键;如果有主键或者合适的唯一索引...INSERT:InnoDB为这个新行记录当前的系统版本号。 DELETE:InnoDB将当前的系统版本号设置为这一行的删除ID。...这个方案的缺点在于存储引擎必须为每一行存储更多的数据,做更多的检查工作,处理更多的善后操作。 MVCC只工作在REPEATABLE READ和READ COMMITED隔离级别下。
参数 我们都知道在pandas中可以使用sample()方法对数据框进行各种放回/不放回抽样,但以前版本中抽完样的数据框每行记录还保持着先前的行索引,使得我们还得多一步reset_index()操作,而在...1.3中,新增类似sort_values()和drop_duplicates()中的同名参数ignore_index: 2.5 explode()新增多列操作支持 当数据框中某些字段某些位置元素为列表...、元组等数据结构时,我们可以使用explode()方法来基于这些序列型元素进行展开扩充,但在以前的版本中每次explode()操作只支持对单个字段的展开,如果数据中多个字段之间同一行对应序列型元素位置是一一对应的...而1.3版本中直接对多字段同步explode()进行了支持: 2.6 append模式下写出多工作表excel文件的新策略 在1.3版本中,针对mode='a'模式下向外写出多工作表excel文件,新增了参数...if_sheet_exists来设定新工作表与已存在工作表重名时的处理策略,默认为'error'即直接抛出错误,'new'则会自动修改工作表名,'replace'则会覆盖原同名工作表: 2.7 结合SQL
2.4 sample()随机抽样新增ignore_index参数 我们都知道在pandas中可以使用sample()方法对数据框进行各种放回/不放回抽样,但以前版本中抽完样的数据框每行记录还保持着先前的行索引...2.5 explode()新增多列操作支持 当数据框中某些字段某些位置元素为列表、元组等数据结构时,我们可以使用explode()方法来基于这些序列型元素进行展开扩充,但在以前的版本中每次explode...()操作只支持对单个字段的展开,如果数据中多个字段之间同一行对应序列型元素位置是一一对应的,需要展开后也是一一对应的,操作起来就比较棘手。 ...2.6 append模式下写出多工作表excel文件的新策略 在1.3版本中,针对mode='a'模式下向外写出多工作表excel文件,新增了参数if_sheet_exists来设定新工作表与已存在工作表重名时的处理策略...,默认为'error'即直接抛出错误,'new'则会自动修改工作表名,'replace'则会覆盖原同名工作表: ?
领取专属 10元无门槛券
手把手带您无忧上云