Поддерживает ли PostgreSQL прозрачное сжатие таблиц (фрагментов)?

Способ иметь отдельную реализацию выглядит следующим образом.

//inner_foo.h

template <typename T>
struct Foo
{
    void doSomething(T param);
};


//foo.tpp
#include "inner_foo.h"
template <typename T>
void Foo<T>::doSomething(T param)
{
    //implementation
}


//foo.h
#include <foo.tpp>

//main.cpp
#include <foo.h>

inner_foo имеет форвардные объявления. foo.tpp имеет реализацию и включает inner_foo.h; и foo.h будет иметь только одну строку, чтобы включить foo.tpp.

Во время компиляции содержимое foo.h копируется в foo.tpp, а затем весь файл копируется в foo.h после который он компилирует. Таким образом, ограничений нет, и именование согласовано в обмен на один дополнительный файл.

Я делаю это, потому что статические анализаторы для кода разбиваются, когда он не видит передовые объявления класса в * .tpp. Это раздражает при написании кода в любой среде IDE или с помощью YouCompleteMe или других.

34
задан Erwin Brandstetter 8 January 2018 в 15:32
поделиться

2 ответа

Да, PostgreSQL сделает это автоматически, когда они превысят определенный размер. Однако сжатие применяется к каждому отдельному значению данных, а не на уровне всей таблицы. Это означает, что если у вас есть миллиард очень узких строк, они не будут сжаты. Или, если у вас очень много столбцов, в каждом из которых есть небольшое значение, они не будут сжаты. Подробности об этой схеме см. В руководстве .

Если она вам нужна на уровне всей таблицы, решение состоит в том, чтобы создать TABLESPACE для тех таблиц, которые вы хотите сжать, и указать его на сжатую файловую систему. Пока файловая система по-прежнему подчиняется семантике fsync () и стандартной POSIX, это должно быть совершенно безопасно. Подробности об этом см. В руководстве .

44
ответ дан 27 November 2019 в 16:57
поделиться

Возможно, не то, что вы имеете в виду, но все же полезная информация - Глава 53. Физическое хранилище базы данных прекрасного руководства. Раздел TOAST требует дальнейшего внимания.

8
ответ дан 27 November 2019 в 16:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: