我有一个PostgreSQL OLAP多维数据集,该多维数据集包含5个连接的表,具有约100万行。许多用户可以通过Web界面过滤维度,从而在服务器上增加工作量。 Web应用程序是一种分析工具,因此用户可以不断更改尺寸以分析其业务。 您能否提供一些提高性能的提示? 例如,最好使用包含5个联接表的物化视图,该表由Postgres缓存,并且用户查询该视图,而不是一次又一次地不执行联接。或在最常用的列上使用索引。 请帮忙! ::-)
答案 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 BY
和WHERE
您是否在使用PostgreSQL的实际OLAP服务器前端?确保已启用缓存并对其进行了优化
使用RAID 10 SSD,并确保您的计算机具有足够的核心和RAM
使用browser caching,代理缓存,Web服务器缓存,ORM缓存