我有一张表,即X,有大约64列存储在线金融交易。 每天都有数百万条记录被插入X.大约16列X是可查询的,也就是说,许多系统报告需要根据这16列的值过滤X的数据。
对所有这16列使用DB索引会使插入操作太慢。另一方面,在某些列上没有索引会使某些报告过于缓慢。
所以,这是问题所在。我如何设计表X及其索引以获得插入和报告的最佳性能?我使用oracle 11g DBMS。
答案 0 :(得分:2)
尝试对表进行分区。而不是创建一个巨大的表,而是每天,每周或每月创建一个表,以及一个连接所有查询的视图。或者,Oracle支持分区表(但是否可用取决于您的Oracle版本)。
插入数据时,插入正确的分区。这样,更新的索引会小得多。缺点是您需要更多的索引空间,因为索引值将重复。
从积极的方面来说,查询可能会快得多,因为当数据库位于不同的磁盘上时,它可以并行读取表。
另请注意,SQL数据库不能扩展到任何大小。请考虑使用集群或云数据库。它们还有其他缺点,但它们可以处理任意数量的记录(只要你有足够的物理空间用于服务器,就是这样)。
答案 1 :(得分:1)
Recommemdations: