Выбор БД для FreeBSD 6.0

VIB

vib : bash
Модератор
Ответ: Выбор БД для FreeBSD 6.0

20 тыс инсертов раз в 15 минут это не так уже и много...
 

Merlіn

dead wizard
Ответ: Выбор БД для FreeBSD 6.0

VIB сказав(ла):
20 тыс инсертов раз в 15 минут это не так уже и много...
Не зная структуры,типа таблиц и обьёмов вставки трудно сказать наверника. А необходимости применения блокировок таблиц и транзакций(сразу на 20 тыс. записей) я пока не вижу, может и ошибаюсь.
 

Dre.hz

Active Member
Ответ: Выбор БД для FreeBSD 6.0

Я вставляю все LOAD DATA LOW_PRIORITY INFILE
 

Merlіn

dead wizard
Ответ: Выбор БД для FreeBSD 6.0

Dre сказав(ла):
Я вставляю все LOAD DATA LOW_PRIORITY INFILE
При задании ключвого слова LOW_PRIORITY оператор не выполняется, если кто - либо из пользователей в данный момент считывает данные из таблицы.(П.Дюбуа MYSQL)
PS А можно описания типа и структуры таблиц, и др.?
 

Dre.hz

Active Member
Ответ: Выбор БД для FreeBSD 6.0

Merlіn сказав(ла):
При задании ключвого слова LOW_PRIORITY оператор не выполняется, если кто - либо из пользователей в данный момент считывает данные из таблицы.(П.Дюбуа MYSQL)
If you use LOW_PRIORITY, execution of the LOAD DATA statement is delayed until no other clients are reading from the table.

PS А можно описания типа и структуры таблиц, и др.?
CREATE TABLE `iplog`.`log20060527` (
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`src` varchar(15) NOT NULL default '',
`dst` varchar(15) NOT NULL default '',
`packets` int(10) unsigned NOT NULL default '0',
`bytes` int(10) unsigned NOT NULL default '0',
`sport` int(10) unsigned NOT NULL default '0',
`dport` int(10) unsigned NOT NULL default '0',
`proto` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
 

Merlіn

dead wizard
Ответ: Выбор БД для FreeBSD 6.0

Хороший перевод, как всегда лучше читать оригинал.
Обьем вставки (Максимальный):
Одна строка
08 = 1 * datetime = 8 байт
32 = 2 * varchar (15) = 16 байт (max)
20 = 5 * int(10) = 4 байта
Итого = 60 байт
20 000 * 60 = 1 200 000 байт ~ 1,1 Мб
То есть, как говорил VIP, вставка небольшая. Но если я правильно понял создавать для каждого лога талицу это ведь 24*60/10 ~ 144 таблицы в день, как потом выборки делать?
ИМХО
Лучше отделить таблицы в которые вставок уже не будет, групировать по месяцам (или другой промежуток времени за который наиболее часто потребуется делать выборки),потом можно будет преобразовывать таблицы из MyISAM в BDB InnoDB,проиндексировать их(возможно даже нормализировать), это даст дополнительные возможности и ускорит выборки. А резервное копирование и архивацию всё равно прийдётся предусмотреть.
 

Dre.hz

Active Member
Ответ: Выбор БД для FreeBSD 6.0

Merlіn сказав(ла):
То есть, как говорил VIP, вставка небольшая. Но если я правильно понял создавать для каждого лога талицу это ведь 24*60/10 ~ 144 таблицы в день, как потом выборки делать?
Нет, не для каждого лога! Одна таблица на один день. В таблице, по практическим наболюдениям, - около 4 миллионов строк, объем 250-300 мегабайт.
 

VIB

vib : bash
Модератор
Ответ: Выбор БД для FreeBSD 6.0

Если будет одна таблица на один день, то зачем тогда ставить тип данных datetime? Правильнее тогда взять TIME, что уменьшит размер поля с 8 до 3 байт.
Но я бы советовал создавать с разбивкой например по месяцам, а то получается слишком большое количество таблиц.
 

Merlіn

dead wizard
Ответ: Выбор БД для FreeBSD 6.0

Я не знаю точно но не будет ли проблемой собирать их все в одну таблицу за месяц при таком обьёме получится 250 -300 Мб * 30 дней ~ 7,3 - 8,7 Гб таблица за месяц (без уверенности что выборки будут имеено за месяц наиболе частые, возможно их будут делать за опред. даты). При этом есть вопрос
1.Собирать таблицы по дням в одину за месяц(в конце месяца), преобразовывать и индексировать(индексировать помоему это без вариантов прийдётся).
2.Собирать таблицы по дням в одину за месяц(в конце дня,ночью), но преобразовывать и индексировать в конце месяца.
3.Писать сразу в одну за месяц,а при начале нового месяца, старую преобразовывать и индексировать.

PS Про RAID, будет строится(если будет) на основе чипсетa мат. платы (939), насколько я понял (внешнии контролеры дорогие), значит будут доступны масивы типа 0,1,1+0,5 (в лучшем случае,а конкректно нужно знать какой чипсет).
Их описание
RAID 0
Дисковый массив без отказоустойчивости (Striped Disk Array without Fault Tolerance)
Дисковый массив без избыточного хранения данных. Информация разбивается на блоки, которые одновременно записываются на отдельные диски, что обеспечивает повышение производительности. Такой способ хранения информации ненадежен, поскольку поломка одного диска приводит к потере всей информации, поэтому уровнем RAID как таковым не является.
За счет возможности одновременного ввода/вывода с нескольких дисков массива RAID 0 обеспечивает максимальную скорость передачи данных и максимальную эффективность использования дискового пространства, так как не требуется места для хранения контрольных сумм. Реализация этого уровня очень проста. RAID 0, как правило, применяется в тех областях, где требуется быстрая передача большого объема данных. Для реализации массива требуется не меньше двух винчестеров.
Преимущества:
наивысшая производительность в приложениях, требующих интенсивной обработки запросов ввода/вывода и данных большого объема;
простота реализации;
низкая стоимость;
максимальная эффективность использования дискового пространства — 100%.
Недостатки:
не является "настоящим" RAID'ом, поскольку не поддерживает отказоустойчивость;
отказ одного диска влечет за собой потерю всех данных массива.
RAID 1
Дисковый массив с зеркалированием (Mirroring & Duplexing)
Дисковый массив с дублированием информации (зеркалированием данных). В простейшем случае два накопителя содержат одинаковую информацию и являются одним логическим диском. При выходе из строя одного диска его функции выполняет другой. Для реализации массива требуется не меньше двух винчестеров.
Преимущества:
простота реализации;
простота восстановления массива в случае отказа (копирование).
Недостатки:
высокая стоимость — 100-процентная избыточность;
невысокая скорость передачи данных
RAID 5
Отказоустойчивый массив независимых дисков с распределенной четностью (Independent Data Disks with Distributed Parity Blocks)
Самый распространенный уровень. Блоки данных и контрольные суммы циклически записываются на все диски массива, отсутствует выделенный диск для хранения информации о четности, нет асимметричности конфигурации дисков.
В случае RAID 5 все диски массива имеют одинаковый размер — но один из них невидим для операционной системы. Например, если массив состоит из пяти дисков емкостью 10 Гб каждый, то фактически размер массива будет равен 40 Гб — 10 Гб отводится на контрольные суммы. В общем случае полезная емкость массива из N дисков равна суммарной емкости N–1 диска.
Самый большой недостаток уровней RAID от 2-го до 4-го — это наличие отдельного диска (или дисков), хранящего информацию о четности. Скорость выполнения операций считывания достаточно высока, так как не требует обращения к этому диску. Но при каждой операции записи на нем изменяется информация, поэтому схемы RAID 2-4 не позволяют проводить параллельные операции записи. RAID 5 не имеет этого недостатка, так как контрольные суммы записываются на все диски массива, что делает возможным выполнение нескольких операций чтения или записи одновременно. RAID 5 имеет достаточно высокую скорость записи/чтения и малую избыточность.
Преимущества:
высокая скорость записи данных;
достаточно высокая скорость чтения данных;
высокая производительность при большой интенсивности запросов чтения/записи данных;
высокий коэффициент использования дискового пространства.
Недостатки:
низкая скорость чтения/записи данных малого объема при единичных запросах;
достаточно сложная реализация;
сложное восстановление данных.
 

Dre.hz

Active Member
Ответ: Выбор БД для FreeBSD 6.0

VIB сказав(ла):
Если будет одна таблица на один день, то зачем тогда ставить тип данных datetime? Правильнее тогда взять TIME, что уменьшит размер поля с 8 до 3 байт.
Я вообще думал - может завести еще одну таблицу, куда индексу присваивать значение времени, а в выборки тупо ставить int, который будет ссылаться на ту таблицу.

Но я бы советовал создавать с разбивкой например по месяцам, а то получается слишком большое количество таблиц.
Я буду файл таблицы архивировать и в хранилище кидать, а саму таблицу удалять, так что так и будет - в течении одного месяца - в таблице, потом - в архиве.
 
Зверху