我们最近将数据库从Oracle迁移到Netezza。我们主要是一个OLAP数据库,但它的一部分是OLTP,它填充了几个表(前端应用程序)。这些实时表将与少量历史表连接并生成报告。我们对OLAP部分的性能感到满意,但OLTP存在一个主要的性能问题。在Netezza中提高OLPT的方法有哪些?或者是否有任何设计方法可以单独维护OLTP?
答案 0 :(得分:1)
我不建议将Netezza
用于OLTP,但是我们会遇到数据太大以至于我们没有其他选择的情况。在这种情况下,您可以进行一些调整以加快速度。
distribution
然后distribute on
distribute on random
organize
添加到OLTP操作基于Integer
,Date
或者您可以考虑混合设计
SQL Server
或Postgres
Netezza
。 答案 1 :(得分:0)
并行系统的性能有两个主要考虑因素:均匀分布数据;和将要连接的数据的搭配。第一点已经解决:选择一个好的分区键,可以为您提供良好,均匀的数据分布。
关于我的第二点,如果要加入数据(例如更新),则必须很少或没有数据移动。确保这是真的将减少数据流量。确保数据并置的最佳方法是使用相同的分区键。相同的密钥将始终散列到同一节点;同一节点表示没有流量进行连接。例如,假设您有Cust(CNo),Order(Ono),Order Item(Ono,INo)和Product(PNo)。主键在括号中。如果使用上面的分区键,则不会并置数据。但是,如果您在Cust中使用CNo,在订单中使用fk CNo,并在订单项中放置一个冗余的CNO,作为分区键,它们将被并置。产品不能配置但不需要;它通常不是那么大,将CNo放入产品中是没有意义的。
NOSQL不允许连接,因为它无法确保连接数据的并置(还有其他原因)。在NOSQL中,数据将分布在各种节点上。
两个伟大的性能杀手是种类和笛卡尔产品。确保在Netezza上加入的数据中不存在这些内容。