精华内容
下载资源
问答
  • 脏读:读到事务未提交数据称为脏读,违反事务隔离级别 脏数据:mysql内存页内已发生修改还没有同步到磁盘上数据,由于mysql是异步按一定频率刷新到磁盘故存在此情况,属于正常 ...

    脏数据:读到事务未提交的数据,违反事务隔离级别

    脏页:mysql内存页内已发生修改还没有同步到磁盘上的数据,由于mysql是异步按一定频率刷新到磁盘故存在此情况,属于正常

    脏读:对脏数据的读取

    展开全文
  • 关于脏数据比如说,有两个用户A,B同时操作数据库,A开始了一个事务,修改了某行,但还未提交,这个时候,B开始另一个事务,读取了该行,然后A回滚了事务,即修改被取消了,那么,B读取到那一行数据就是脏数据上面...
    关于脏数据
    比如说,有两个用户A,B同时操作数据库,A开始了一个事务,修改了某行,但还未提交,这个时候,B开始另一个事务,读取了该行,然后A回滚了事务,即修改被取消了,那么,B读取到的那一行数据就是脏数据

    上面这句话正确吗?如果事物A未提交,事物B能读到A所修改的数据吗?

    如何判断A,B 是否属于同一个事物?

    在PL/SQL 中先删一条数据(没有提交)紧接着在查刚才那条数据是查不到的,既然没有提交为什么会查不到呢?

    希望各位能详细回答一下,小弟不胜感激。

    Q:如果事物A未提交,事物B能读到A所修改的数据吗?
    A:当然看不到

    Q:如何判断A,B 是否属于同一个事物?
    A:这个应该不用判断吧,两次连接 就是属于两个“事物”

    Q:在PL/SQL 中先删一条数据(没有提交)紧接着在查刚才那条数据是查不到的,既然没有提交为什么会查不到呢?
    A:因为这个是一个“事物”中,例如你在plsql developer中开启另一个窗口,就可以查到了。

    “A开始了一个事务,修改了某行,但还未提交,这个时候,B开始另一个事务,读取了该行”,因为A没有提交,B读取的是A修改前的数据。没有提交的数据只有自己能查询到,其他用户是查看不到的。
    建议你多看看这方面的资料吧

    楼主首先要弄清楚 事务是为了保证数据完整性的 
    A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据
    但是 在A事务中查询的话 查到的都是操作之后的数据
    这个很好理解 你开两个sql窗口 在一个里边给一个表insert一条数据 不提交 紧接着select 有数据 但是去另一个sql窗口select 就没有数据 


    这个要看数据库工作在哪个隔离级别.只有在read uncommitted的时候才会出现脏读.
    而oracle只支持read committed和read serialization两种,所以不会出现你说的情况.

    A没有提交之前,B只能看到行修改之前的数据,这是undo表空间的作用之一:维护数据的一致性.

    引用:

      楼主首先要弄清楚 事务是为了保证数据完整性的 
    A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据
    但是 在A事务中查询的话 查到的都是操作之后的数据
    这个很好理解 你开两个sql窗口 在一个里边给一个表insert一条数据 不提交 紧接着select 有数据 但是去另一个sql窗口select 就没有数据


    +1

    去查下隔离级别和脏读,不可重复读,幻读等现象的关系就明白了.

    Oracle 如何设置事务隔离级别去让 B 也看到 A 正在改的那个数据?


    该回复于2011-04-14 10:49:26被版主删除

    A没有提交之前,B只能看到行修改之前的数据,这是undo表空间的作用之一:维护数据的一致性.

    没有提交的数据只有自己看得到,并没有update到数据库。

    因为他只是在内存中修改,并没有被持久化

    该回复于2012-07-31 14:23:34被版主删除

    在A对数据进行写操作的时候,这时候这部分数据在缓冲区有一个备份数据。没有提交的话,是不会改变的,脏数据是提交但是没有保存到磁盘的数据。
    展开全文
  • 由于滥用缩写词,惯用语,数据输入错误,重复记录,丢失值,拼写变化,不同计量单位,大量应用系统产生大量数据是脏数据。这些脏数据是没有意义,根本就不可能为以后数据挖掘决策分析提供任何支持。这就是...

    一般情况下,企业都有多套的业务系统,一些大型企业甚至会有上百套的业务系统。这些业务在不同时期由不同的团队开发完成。因此,这些业务系统都参考着不同的标准生产各自数据。由于滥用缩写词,惯用语,数据输入错误,重复记录,丢失值,拼写变化,不同的计量单位,大量应用系统产生的大量数据是脏数据。这些脏数据是没有意义的,根本就不可能为以后的数据挖掘决策分析提供任何支持。这就是数据质量问题的由来。

     

    一般来说数据质量问题有四个因素造成:

    8be46b5fef0d54b6d99479e8e55a04dd0d1133b2

     

    从上述的四因素来说,管理因素和流程因素属于组织管理范畴,信息因素和技术因素属于技术范畴。所以,要改进数据质量问题,要从组织管理和技术两方面入手,才能从根本上,最佳地解决数据质量问题。

     

    从方法论的角度,从组织管理上去改进质量,我们能做的是:

    • 确立组织数据质量改进目标

    • 评估组织流程

    • 制定组织流程改善计划

    • 实施改进

    • 评估改善效果

     

    从技术上去改进数据质量,我们能做的是:

    • 数据分析

    • 数据评估

    • 数据清洗

    • 数据监控

    • 错误预警

     

    当我们谈到数据质量改进的时候,我们必须要有一个数据质量评价标准,有了评价标准,我们才能知道如何评价数据的质量,才能把数据质量量化,并知道改进的方向和改进的效果。

     

    目前业内认可的数据质量的六大标准是:

     

    b0a26283e9168d7e853f37a66a1d47fc380adfde

     

    用户可以把每个标准作为六边形的顶点,把你的数据该标准下的质量作为0-100分的点,在图的中心是0,在六边形的顶点是100分,把数据质量点连起来,围城的面积S就是用户数据质量的情况。

     

    3f11ca14d57db7406594e5ce41700f4c395b6e15

     

    通常在业务系统存在两大类型数据:主数据和行为数据。主数据是描述事物主体的数据比如人,商品等,行为数据围绕主数据描述的事物发生的行为数据比如交易订单数据,日志数据等。所以,数据治理的改进的核心在于主数据质量改进,只有改进了主数据质量,才能有可能把整体业务数据质量提升上去。

     

    主数据质量治理的目标是把各个业务系统低质量的基础数据,经过质量治理,形成统一规范的主数据,然后反馈给业务系统和其他数据应用系统使用。

     

     

    493d81778346dfbbe2b25742158f9a43e18a41f3

    • 让数据规范起来(得到所有相关人员的认可——元数据)

    • 得到一份标准的数据(主数据)

    • 建立一套体系来维护数据(主数据管理体系——数据治理)

     

    当然,解决这个问题不仅仅只有主数据一个方法,也可以在建设企业信息系统的时候就从全局考虑,借助业务中台建设全局共享的业务服务中心,在业务服务中心的设计中确保基础数据的统一。但当前的现实情况是,大多数企业经过多年的信息化建设,已经积累了大量的烟囱式信息系统,按照业务中台的思路,彻底推倒重建的成本巨大。所以主数据管理也是解决企业当前基础数据不统一的可行方案。

     

    对主数据的质量进行改进,需要从以下几个方面入手:

     

    8efcc6711c139d2bc5b8e781dccf8487c0ae4f33

    数据质量改进流程图

     

    1. 了解数据现状

     

    当前有多少数据?数据模型是什么样子?涉及到哪些业务部门和角色?有什么样的维护流程和体系?数据在哪个或者哪些系统中录入?数据如何流转?数据质量如何?共享质量如何?

    ...

    可通过以下两种方式对当前数据现状进行调研了解:

    管理流程调研:管理流程调研按照人员,组织,客商,物料,产品,资产,项目以及合同等分成多个子项目。根据企业需要,选择一些做调研。

    基础数据调研:主要是调研的是当前的数据在哪里?哪个部门管?怎么管?数据量有多大?数据格式是什么?数据质量如何?

     

    2. 设计数据模型

     

    数据定义是什么?数据到底有几个模型?每个模型中有几个字段?每个字段的含义是什么?这里主要讨论基础的数据建模,即确定主数据的属性数量,名称,属性数据类型及长度等信息。

    主数据定义:定义需要明确和清晰。定义关系到数据范围和数据量,关系到与其他主数据的关系。比如人员主数据是指所有与**公司签署了正式劳动合同的人员。人员主数据是从企业管理视角出发的人员实体的数字化描述。

    主数据中表的颗粒度:是用一张表还是多张表描述实体,这决定主数据中表与表之间存在1:1,1:N,N:M的各种关系。

    主数据中字段属性的颗粒度:根据实际的业务需求,定义字段属性的颗粒度,颗粒度细,则数据量大。反之,则少。

    遵循的原则:权威原则、全局性原则、共享性原则、扩展性原则。

    c50ea8048c677687023bd73ae72541a6f615ad81

     

    3. 制作主数据管理方案

    哪个部门,哪个岗位,在什么时候,依据什么进行主数据维护?

    • 建立数据管理的虚拟组织,找到对数据负责的人。每个主数据都要有一个或者多个业务部门对数据负责,不是信息中心。信息中心仅对数据本身负责。

    • 定义数据管理组织的管理职责。针对每个数据的每个字段,都应当回答,谁,在什么场景,依据什么,是否多人和有流程对内容进行管理和维护。

     

    4. 数据清洗方案

    当前存在的数据如何变成标准主数据的过程。

    • 责任部门负责数据清洗和对数据质量负责,其他部门进行协助

    • 根据数据质量情况决定组织模式,必要时需要“运动会”模式

    • 提前就数据要求,填报规范做充分培训

    • 采用大数据平台做清洗的技术手段,可以有无限扩张的计算和存储能力,很好的解决清洗数据中的计算资源消耗问题

     

    d22edfd787d77d80c708a0c907a48a21ecd97116

     

    5. 主数据管理技术方案

    数据流向方案

    数据的入口在哪里,主数据系统中的数据分发给哪些系统

    系统支持方案

    数据在哪个系统中录入

    系统集成方案

    主数据服务规范,第三个系统改造内容

     

    随着互联网时代的来临,企业面对的数据已经远远不是简单的业务数据,而是来自网络和各种设备的大量结构化和非结构化数据即大数据(Big Data)。通常来说大数据质量往往比业务系统产生的主数据的质量还要差,当然也需要治理。

     

    大数据的质量改进主要是通过数据中台的数据清洗,ID Mapping等技术来解决。

     

    数据的质量治理有七大原则:

     

    a38b557b5c8aca00b6f0b8704816b2da22831505

     

     

    展开全文
  • 前言本文只但从数据库本身来看查询慢可能因素,至于内存不够、网速较慢不属于本文讨论范畴。本文内容参考自公众号文章:我对公众号中内容作自己梳理总结开始首先要分类讨论一下,这条查询语句是在偶尔情况下...

    前言

    本文只但从数据库本身来看查询慢的可能因素,至于内存不够、网速较慢不属于本文讨论范畴。

    本文内容参考自公众号文章:

    我对公众号中的内容作自己的梳理总结

    开始

    首先要分类讨论一下,这条查询语句是在偶尔的情况下查询效率慢,还是一直都存在查询效率慢的问题。

    对于第一种情况,可能查询语句本身没有问题,是数据库遇到了其他问题;

    对于第二种情况,应该是查询语句出了问题,需要优化

    偶尔效率慢的情况

    原因一:刷新“脏”页

    什么是“脏”页

    当对数据库进行插入或者更新操作时,数据库会立刻将内存的数据页上的信息更新,但是不会立刻将将更新的数据存到磁盘上,而是先保存到redo log中,等合适的时机在将redo log的信息存储到磁盘上

    针对这种内存中的数据页和磁盘上的数据不同的情况我们将内存中的数据页称为“脏”页,而内存中和磁盘上数据相同的情况则称为“干净”页。

    刷新“脏”页时,系统会暂停其他的操作,全身心的将数据存到磁盘中,就会导致平常正常执行的mysql语句变慢

    什么时候会刷新“脏”页

    case1:redo log装满时

    case2:内存不够用时

    case3:mysql认为系统空闲时

    case4:mysql正常关闭时

    原因二:数据被锁住

    可以用show processlist命令查看一下语句执行的状态,查看要查询的数据是否被锁住

    一直都存在效率慢的情况

    原因一:查询的数据量太大

    查看是否查询了不必要的行与列,避免用select * from table这样的语句

    原因二:没有用到索引

    当数据量很大时,若没有用索引采用全表索引是很耗费时间的。而这里没有用到索引由可以分多钟情况

    case1:没有建索引

    case2:索引失效

    引起索引失效的可能原因

    1)在索引列上用了内置函数或者其他+-*/运算

    2)用通配符开头

    3)多列索引违背最佳最匹配原则

    4)or操作符容器造成索引失效,除非or的每个操作列都有索引

    5)字符串不加单引号

    case3:系统选错索引

    系统选错索引其实是索引失效的一种形式,但是由于涉及到的知识点较多,所以单独拿出来分析。

    系统选错索引导致索引失效时系统将全表扫描与用索引要扫描的行数进行比较,若是觉得运用索引反而要复杂,则系统就会放弃索引采用全表扫描的方式。

    那么什么时候会出现运用索引反而比全表扫描效率更低的情况呢?

    首先我们都知道主键索引保存的是整行数据,而非主键索引保存的是主键的值。所以运用非主键索引时要先定位到满足条件的行的主键值,在由主键值拿到整行数据的信息,要经过两次索引的过程。

    极端情况下,当索引寻找的数据条件全表都满足时,则此时索引寻找相比于全表扫描反而多了一系列索引过程。

    所以系统在判断是否需要应用索引时会先判断如果运用索引大致需要扫描多少行,如果系统预测要扫描的行数很多,则系统会选择放弃索引采取全表扫描的方式。

    系统如何判断运用索引需要扫描的行数?这就需要用到索引的区分度。索引的区分度又称为基数,一个索引上不同的值越多,意味着出现相同数值的索引越少,意味着索引的区分度越高。

    区分度越高,则满足索引查询条件的数据就越少,则系统预测扫描的函数不多。

    那么索引的区分度又是如何得来的呢?

    采样。系统通过采样的方式来推测索引的区分度。既然是采样则就会有误差,如果你想避免这种误差,不想要系统进行这种它认为的人性化的选择方式,你可以强制运用索引

    select * from t index(a) where c>100 and c<1000;

    你也可用下面的第一行命令查看索引的基数,如果基数和实际不符合的话你也可用第二行命令让系统重新采样计算索引基数

    1 show index fromt;2 analyze table t;

    可以用explain+SQL查询语句来查看SQL语句的执行过程,查看是否用到了预期索引

    explain命令可以参考我的另一篇博文mysql优化一之查询优化

    展开全文
  • 本文主要介绍缓存架构设计常见问题以及解决方案,业界案例。...因为缓存属于持久化数据的一个副本,因此不可避免的会出现数据不一致问题。导致读或读不到数据的情况。数据不一致,一般是因为网络不稳定或节点故...
  • 这种问题属于开放性的问题,网上搜了些资料,总结了一下 ... Master Thread:主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括页的刷新、合并插入缓冲(INSERT BUFFER)、UNDO页的回收等 IOThr.
  • 事务并发产生问题

    2020-05-18 09:52:19
    事务T2读取同一数据后,T1由于某种原因撤销修改了,这时T1已修改过的数据恢复原值,而T2读到的数据是撤销修改之前的数据,那么此时T2的数据就与数据库中的数据不一致,则T2读到的数据就为""数据,即不正确的数据。...
  • oracle 检查点(checkpoint)

    千次阅读 2012-03-09 15:23:34
    以下内容整理自网路,如有侵权,请联系我。 checkpoint扫盲 ...什么是checkpoint ...在数据库系统中,写日志和写数据文件是数据库中IO消耗最大两种操作,在这两种操作中写数据...而脏数据块着保存在数据缓存(buffer
  • 在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库性能,通常数据库都是保证在提交(commit)完成之前要先保证日志都被写入到日志文件中,而脏数据块着保存在数据缓存(buffer cache)...
  • c语言中链表学习

    2020-07-29 19:24:24
    链表属于c语言中比较靠后知识...数据脏的 每次数据块都是通过malloc函数动态分配一段内存 创建 p=malloc(sizeof(struct node)) 创建好以后直接返回当前数据指针 然后让前一个数据块里next指针 指向p就行了
  • 因为缓存属于持久化数据的一个副本,因此不可避免的会出现数据不一致问题。导致读或读不到数据的情况。数据不一致,一般是因为网络不稳定或节点故障导致。根据数据的操作顺序,主要有以下几种情况。
  • 隔离级别都与问题相对应,数据库操作常见的...  虚读,强调的是,第二次返回结果中,属于第一次返回结果的条目没有任何变化,但是返回条目的数目会变化  数据库事务隔离级别  1 read uncommitted 读的那个级别
  • 磁盘跟磁盘之间交互是用于写脏数据,将SSD中脏cache块拷贝到磁盘上去。现在介绍下两种情况使用接口函数,这样后面在看读写流程时看到这两个函数就十分亲切了,并且清楚地知道数据是从哪里流...
  • 检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并...检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件一个检查点操作,属于此实例全部缓存区写入数据文件。触发命令:svmrgrl&g...
  • java中锁不可描述

    2020-10-05 21:04:47
    volatile用于修饰变量,属于JUC层面锁,在多线程访问情况下,不会出现读,所有读请求都能读到更新后的数据。它是通过读写屏障去实现锁效果,就是我更新完数据,会强制去更新主缓存和各级缓存的数据。 如果...
  • 事务初次学习笔记

    2019-12-05 17:20:48
    什么是事务: 对数据库一系列操作,如果属于同一个事务,那么这些操作要么同时成功要么同时失败 事务特性: ...读:可以读到其他事务未提交的数据 虚读:同一个事务多次读取,数据不一致 幻读:有...
  • 该等待事件属于DBWR进程,DBWR进程负责向数据文件写入脏数据块的唯一进程,即DBWR进程执行对使用SGA的所有数据库写入。阻塞该进程的是操作系统的IO子系统。当然DBWR进程的写入操作也会对同一磁盘操作的其他会话造成...
  • ckpt工作机制

    万次阅读 2011-09-21 17:18:41
    1)局部检查点:单个实例执行数据库所有数据文件一个检查点操作,属于此实例全部缓存区写入数据文件。 触发命令: svmrgrl>alter system checkpoint local; 这条命令显示触发一个局部检查点。 2)全局...
  • 检查点(checkpoint)工作机制 ...1)局部检查点:单个实例执行数据库所有数据文件一个检查点操作,属于此实例全部缓存区写入数据文件。 触发命令: svmrgrl>alter system checkpoint l...
  • 检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件一个检查点操作,属于此实例全部缓存区写入数据文件。触发命令:svmrgrl>alter system checkpoint local;这条命令显示触发一个局部检查点。2...
  • 概念: Java中交互方式分为同步和异步两种: 同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;...同步可以避免读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权...
  • 大多数文章都会提到每一个组件都会有一个属于自己变更检测器(change detector),它负责检查和这个组件,但是他们几乎都仅限于在说怎么使用immutable数据和变更检测策略,这篇文章将会让你明白为什么使用...
  • mysql刷盘机制详解

    2021-01-12 17:44:42
    内存中的脏数据到数据盘。 但是mysql多一个环节,就是把binlog从binlogcache写入到binlog文件中。binlogcache不是共享内存,是为每个client分配私有内存,是mysqlserver管理。而logbuffer是共享内存,由innodb...
  • 、 merge 执行流程是这样: 1. 从磁盘读入数据页到内存(老版本的数据页); 2. 从 change buffer 里找出这个数据 change buffer 记录 ( 可能有...改,属于脏页,之后各自刷回自己物理数据,就是另外一个过
  • 缓存清理

    2017-09-04 22:23:00
    我们要针对这些变化,清理掉保存数据,也不是很容易。 2、最简单缓存数据--静态数据。这种数据往往在程序运行 时是不会变化,比如在web服务器内存中缓存HtmL文件数据 事实上,所有不是由外部用户...
  • oracle checkpoint 详解

    2019-10-08 03:16:25
    Oracle checkpoint详解 topcheckpoint扫盲 top什么是checkpoint 在数据库系统中,写日志和写数据文件是数据库中IO消耗最大两种操作,在这两种操作中写数据文件属于...而脏数据块着保存在数据缓存(buffe...
  • Oracle checkpoint详解

    2014-10-20 15:55:53
    在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库性能,通常数据库都是保证在提交(commit)完成之前要先保证日志都被写入到日志文件中,而脏数据块着保存在数据缓存(buffer cache)...

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

属于脏数据的是