Netezza的OLTP性能问题

时间:2015-01-21 14:15:53

标签: migration database-migration netezza

我们最近将数据库从Oracle迁移到Netezza。我们主要是一个OLAP数据库,但它的一部分是OLTP,它填充了几个表(前端应用程序)。这些实时表将与少量历史表连接并生成报告。我们对OLAP部分的性能感到满意,但OLTP存在一个主要的性能问题。在Netezza中提高OLPT的方法有哪些?或者是否有任何设计方法可以单独维护OLTP?

2 个答案:

答案 0 :(得分:1)

我不建议将Netezza用于OLTP,但是我们会遇到数据太大以至于我们没有其他选择的情况。在这种情况下,您可以进行一些调整以加快速度。

  1. 如果找不到distribution然后distribute on
  2. 的好列,请确保您的表格有良好distribute on random
  3. organize添加到OLTP操作基于
  4. 的密钥的表中
  5. 确保您的密钥是可分发的数据类型IntegerDate
  6. 或者您可以考虑混合设计

    1. SQL ServerPostgres
    2. 中为您的网络应用程序执行OLTP操作
    3. ETL每隔几分钟或几小时更改回Netezza

答案 1 :(得分:0)

并行系统的性能有两个主要考虑因素:均匀分布数据;和将要连接的数据的搭配。第一点已经解决:选择一个好的分区键,可以为您提供良好,均匀的数据分布。

关于我的第二点,如果要加入数据(例如更新),则必须很少或没有数据移动。确保这是真的将减少数据流量。确保数据并置的最佳方法是使用相同的分区键。相同的密钥将始终散列到同一节点;同一节点表示没有流量进行连接。例如,假设您有Cust(CNo),Order(Ono),Order Item(Ono,INo)和Product(PNo)。主键在括号中。如果使用上面的分区键,则不会并置数据。但是,如果您在Cust中使用CNo,在订单中使用fk CNo,并在订单项中放置一个冗余的CNO,作为分区键,它们将被并置。产品不能配置但不需要;它通常不是那么大,将CNo放入产品中是没有意义的。

NOSQL不允许连接,因为它无法确保连接数据的并置(还有其他原因)。在NOSQL中,数据将分布在各种节点上。

两个伟大的性能杀手是种类和笛卡尔产品。确保在Netezza上加入的数据中不存在这些内容。