PostgreSQL OLAP应用程序的性能提示

时间:2019-01-13 13:03:13

标签: postgresql analytics olap

我有一个PostgreSQL OLAP多维数据集,该多维数据集包含5个连接的表,具有约100万行。许多用户可以通过Web界面过滤维度,从而在服务器上增加工作量。 Web应用程序是一种分析工具,因此用户可以不断更改尺寸以分析其业务。 您能否提供一些提高性能的提示? 例如,最好使用包含5个联接表的物化视图,该表由Postgres缓存,并且用户查询该视图,而不是一次又一次地不执行联接。或在最常用的列上使用索引。 请帮忙! ::-)

1 个答案:

答案 0 :(得分:1)

您可以预汇总事实表。例如,如果人们经常查看月份汇总,则创建一个按月份汇总的新事实表。

Partition(按年份)您的事实表

确保事实和暗调上有主键,并且维表的键上有索引。经常用于#include <stdio.h> #include <stdlib.h> typedef struct Node { struct Node *next; int value; } Node, *list; list create_Node() { list head = (list)malloc(sizeof(Node)); if (!head) exit(-1); list tail = head; int len; int val; printf("Please enter the length of the list:\n "); scanf("%d", &len); for (int i = 0; i < len; i++) { list new = (list)malloc(sizeof(Node)); if (!new) exit(-1); printf("Please enter the value of the node:\n "); scanf(" %d", &val); new->value = val; tail->next = new; tail = new; } return head; } int delete_List(list l) { if (l == NULL) { printf("List is empty!"); exit(-1); } list temp; while (l) { temp = l->next; free(l); l = temp; } return 1; } int main() { Node *n = create_Node(); n = n->next; delete_List(n); while (n->next != NULL) { printf("%d\n", n->value); n = n->next; } return 0; } ORDER BYWHERE

的索引列

您是否在使用PostgreSQL的实际OLAP服务器前端?确保已启用缓存并对其进行了优化

使用RAID 10 SSD,并确保您的计算机具有足够的核心和RAM

使用browser caching,代理缓存,Web服务器缓存,ORM缓存