From: "Денис Смирнов" <mithraen@altlinux.ru>
To: ALT Linux sysadmin discuss <sysadmins@lists.altlinux.org>
Subject: Re: [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) (was: OpenVZ, VServer и полудесяток)
Date: Wed, 26 Dec 2007 11:24:16 +0300
Message-ID: <20071226082416.GA9694@mw.local.seiros.ru> (raw)
In-Reply-To: <f7a739430712250751o2c5c664fga8389251c5f81f88@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3684 bytes --]
On Tue, Dec 25, 2007 at 06:51:51PM +0300, Eugene Prokopiev wrote:
>> На всякий случай напоминаю любителям пораскидывать все по разным
>> шпинделям о tablespaces в постгресе. Раскидывать отдельные таблички по
>> разным шпинделям может быть ой как полезно.
EP> А раскидывать отдельно данные и индексы?
Разумеется тоже полезно :)
Кстати я об этом почему-то не задумывался, а результат-то достигается
элементарно и, как мне кажется, во многих случаях существенный...
EP> Есть у меня железка, в которую можно воткнуть не более 2-х
EP> SATA-дисков, и требуется поднять на ней постгрес. Сама система вместе
EP> со всеми скриптами ценнее, чем данные, которые лежат еще и в сейфе на
EP> DVD-R и которые можно залить повторно, но желательно в БД держать как
EP> можно больше данных и делать выборки из них как можно быстрее.
EP> Соотвественно, систему планируется держать на RAID1, а вот данные
EP> непонятно. Т.е. альтернативы XFS нет, а вот что ниже? Варианты:
Для БД ext3 с data=journal работает очень даже замечательно. Я не пробовал
проводить тестирование что реально лучше.
EP> 2) данные на одном диске, логи на другом - но логи занимают
EP> значительно меньше места, чем данные - а места жалко
У тебя два диска. Раскидвай данные по ним так, чтобы нагрузка была
более-менее равномерная. То есть логи да, на один. Можно еще что-то на
него же.
Логи, кстати, лучше всего действительно на XFS.
EP> 3) данные на одном диске, индексы на другом - куда тогда девать логи?
EP> размазывать по двум дискам в виде RAID0?
Нафиг-нафиг! RAID0, кстати, чтобы давал ускорение а не тормоза еще тюнить
надо. Для логов у меня есть сомнения в пользе такого действия.
EP> Если делать то же на трех дисках, то на третий лучше выносить логи
EP> постгреса и логи XFS одновременно?
Хороший вопрос. Я не знаю на него ответа, к сожалению.
>> Жаль в постгресе до сих пор нельзя делать индексы сразу по всем
>> наследникам конкретной таблицы (необходимо для unique значений), когда
>> это появится, будет вообще чудесная возможность практически не трогая
>> frontend выкидывать редко используемые _отдельные row_ на другой
>> шпиндель.
EP> Можно чуть подробнее: как формулируется задача и что хочется получить?
Краткая вводная:
В постгресе есть зачатки объектно-ориентированности. В том числе
"наследование".
Так вот, к примеру, можно сделать табличку:
CREATE TABLE blabla (
blabla_id SERIAL PRIMARY KEY,
cooldata VARCHAR,
is_old BOOLEAN NOT NULL
CHECK(is_old == 'f')
);
CREATE TABLE blabla_old LIKE blabla(
CHECK(is_old == 't')
);
Реально создалось две таблицы. Самое интересное в этом то, что если мы
заполним их данными, а дальше выполним команду:
SELECT * FROM blabla*;
то мы получим данные из обеих (!) таблиц.
А если:
SELECT * FROM blabla* WHERE is_old = 'f';
То никаких обращений к второй таблице не будет вообще.
Собственно описание достаточно краткое, там надо еще чуточку с бубном
поплясать чтобы это заработало, но потенциал у этого решения огромный.
А вот засада следующая -- blabla_id не уникален для этой группы таблиц, он
уникален только в пределах одной таблицы. При этом благодаря тому что он
SERIAL он при заполнении будет вроде как казаться уникальным (на все
таблицы будет одна sequence), но insert/update с указанием конкретного
значения для blabla_id эту идиллию разрушат.
Все что я сейчас рассказываю описано в документации на постгрес гораздо
подробнее, с описанием множества подводных граблей и прочих приятностей.
--
С уважением, Денис
http://freesource.info
----------------------------------------------------------------------------
Старый глюк лучше новых двух.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2007-12-26 8:24 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-25 9:39 ` Michael Shigorin
2007-12-25 10:14 ` Denis Smirnov
2007-12-25 15:51 ` Eugene Prokopiev
2007-12-25 18:45 ` Michael Shigorin
2007-12-26 6:38 ` Eugene Prokopiev
2007-12-26 6:47 ` Michael Shigorin
2007-12-26 8:25 ` Denis Smirnov
2007-12-26 10:37 ` Eugene Prokopiev
2007-12-27 20:59 ` [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) Michael Shigorin
2007-12-28 15:33 ` [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) (was: OpenVZ, VServer и полудесяток) Денис Смирнов
2007-12-29 7:40 ` Eugene Prokopiev
2007-12-30 19:02 ` Денис Смирнов
2007-12-26 8:24 ` Денис Смирнов [this message]
2007-12-26 10:38 ` Eugene Prokopiev
2007-12-27 20:58 ` [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) Michael Shigorin
2007-12-28 15:31 ` [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) (was: OpenVZ, VServer и полудесяток) Денис Смирнов
2007-12-29 15:45 ` [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) Maxim Tyurin
2007-12-30 19:04 ` Денис Смирнов
2007-12-31 16:31 ` Maxim Tyurin
2008-01-03 9:42 ` Aleksey Avdeev
2008-01-03 20:53 ` Maxim Tyurin
2008-01-05 13:40 ` Aleksey Avdeev
2008-01-05 20:48 ` Maxim Tyurin
2008-01-05 21:06 ` Aleksey Avdeev
2008-01-06 18:20 ` Maxim Tyurin
2008-01-08 22:48 ` Michael Shigorin
2008-01-04 16:23 ` Michael Shigorin
2008-01-05 13:44 ` Aleksey Avdeev
2008-01-08 22:49 ` Michael Shigorin
2007-12-25 11:02 ` [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) (was: OpenVZ, VServer и полудесяток) Michael Shigorin
2007-12-25 12:24 ` [Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) Michael Shigorin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071226082416.GA9694@mw.local.seiros.ru \
--to=mithraen@altlinux.ru \
--cc=sysadmins@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git