[Sysadmins] оптимизация дисковой подсистемы (linux multi-disk server howto) (was: OpenVZ, VServer и полудесяток)
Денис Смирнов
=?iso-8859-1?q?mithraen_=CE=C1_altlinux=2Eru?=
Ср Дек 26 11:24:16 MSK 2007
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
----------------------------------------------------------------------------
Старый глюк лучше новых двух.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/sysadmins/attachments/20071226/9127a75f/attachment-0002.bin>
Подробная информация о списке рассылки Sysadmins