AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 28941
Accepted
Chris Aldrich
Chris Aldrich
Asked: 2012-11-20 11:02:22 +0800 CST2012-11-20 11:02:22 +0800 CST 2012-11-20 11:02:22 +0800 CST

数据仓库的隔离级别

  • 772

我们正在我们的组织中建立一个数据仓库(以及一些数据集市)。我的 DBA 技能主要用于 OLTP 类型的应用程序,但我正在为我们的组织支持 OLAP。

我们最近遇到了一个问题,我们的一个 ETL 程序(在这种情况下,它恰好是用 Java 编写的消息驱动 Bean)正在使用可重复读取 (RR) 隔离级别。因此,他们遇到了锁。我显然质疑为什么要使用 RR。(编辑:我原本以为是DB2端的RR,但是从JDBC端得知这是RR,映射到DB2端的RS。从那以后我们也尝试了JDBC端的RC,也就是DB2端的CS . 这似乎解决了一些锁定问题。)

因此,我开始研究数据仓库的建议隔离级别,无论是从提要/源端还是从检索端。

我真的找不到太多。我发现一些文章提到未提交的读取 (UR) 对查询/检索方面有好处,但对馈送方面没有任何帮助。我在想应该使用光标稳定性(CS)或最高读取稳定性(RS)。我会支持 CS,但也许这被 OLTP 思想污染了?

在我们的例子中,我们仓库的主要提要现在是使用 Java 消息队列“实时”完成的。从仓库中检索将使用 ETL 工具(在我们的例子中为 DataStage)完成,可能作为夜间作业开始(一些用于每日报告,另一些用于月度或季度报告)。这些报告将基于我们的市场。因此,虽然仓库可能是“实时”的,但不会被读取或主动查询(至少现在不是)。

诚然,我们使用 DB2 9.7 FP 4(我们希望明年某个时候迁移到 10.1),并且某些细节可能因供应商而异,但是您认为 DBA 推荐的提要和读取隔离级别是什么?为什么?

此外,任何有关集市隔离级别的输入都将不胜感激。

编辑:这样就更容易与其他供应商进行比较。这是映射到 JDBC 隔离级别的 DB2 隔离级别名称表。(根据《理解 DB2:通过示例进行视觉学习》一书,因此版权所有 IBM。)

+------------------------------+-----------------------+
|            JDBC              |          DB2          |
+------------------------------+-----------------------+
| TRANSACTION_READ_UNCOMMITTED | Uncommitted Read (UR) |
+------------------------------+-----------------------+
| TRANSACTION_READ_COMMITTED   | Cursor Stability (CS) |
+------------------------------+-----------------------+
| TRANSACTION_REPEATABLE_READ  | Read Stability   (RS) |
+------------------------------+-----------------------+
| TRANSACTION_SERIALIZABLE     | Repeatable Read  (RR) |
+------------------------------+-----------------------+
db2 data-warehouse
  • 2 2 个回答
  • 1863 Views

2 个回答

  • Voted
  1. Best Answer
    Andy Novick
    2012-11-20T18:22:48+08:002012-11-20T18:22:48+08:00

    对于包括数据仓库在内的大多数数据库来说,Read Committed 是一个足够的隔离级别。由于答案可能不正确,我不会使用未提交的读取。在 SQL Server 上,我们还可以添加 Read Committed Snapshot Isolation。这对行进行版本化并避免查询被更新阻塞。不知道你在 DB2 上是否有类似的东西。

    • 4
  2. Ali Razeghi - AWS
    2012-11-21T10:12:09+08:002012-11-21T10:12:09+08:00

    如果您将 DB2 设置为“只读”模式,我不确定 DB2 是否会自动选择最兼容的隔离级别,但在 MS SQL Server 中会。在您的作业运行前不久,您可以将其设为“只读”。通过这种方式,您可以确定有人不会在大型数据集市上进行更新,并且引擎会关闭锁定/阻塞问题,因为无论如何都没有人可以访问它。

    正如 Andy 所指出的,将隔离级别设置为 READ UNCOMMITTED 可能会产生不利影响,但您的读者不会阻止作者,反之亦然。如果您执行 COUNT(*),您可能会看到截然不同的结果,但这实际上取决于您的加载时间和模式。

    典型的每晚和每月负载需要多长时间?

    • 0

相关问题

  • 解释计划中的 TBSCAN GERROW 是什么意思?

  • 在 DB2 SQL 中模拟类似 REGEXP 的行为

  • z/OS 上 DB2 v9 上的 BLOB

  • 解释计划中的 HSJOIN 是什么意思?

  • 在数据仓库中实现多对多关系有哪些方法?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve