|
MySQL.RU - Webboard
Вернуться
Организация хранения технологического архива (Max) 29/10/2004 - 06:26:55
Re: Организация хранения технологического архива (cooler13) 29/10/2004 - 18:56:25
Re: Организация хранения технологического архива (Dinky) 29/10/2004 - 19:04:31
Re: Организация хранения технологического архива (cooler13) 29/10/2004 - 19:06:42
Re: Организация хранения технологического архива (Max) 30/10/2004 - 08:15:17
Re: Организация хранения технологического архива (cooler13) 31/10/2004 - 04:27:01
Re: Организация хранения технологического архива (Max) 01/11/2004 - 11:48:01
From: Max - 29/10/2004 - 06:26:55
Subject:Организация хранения технологического архива
-----------------
Помогите с организацией хранения данных технологического архива в MySQL.
Задача следующая:
- xранить круглосуточный архив приблизительно 5000 тысяч параметров;
- скорость изменения параметра приблизительно один раз в 5 секунд;
- ведение круглосуточного хранения данных.
Мною было реализовано два варианта хранения данных в архиве.
Первый вариант был заключался в том что данные хранились в единственной таблице в следующей структуре:
TableName DATA
|DT (IDX) | ID (IDX) | Value | Trust|
12-03-2004 19:15:01 | 15 | 543.24| 0 |
12-03-2004 19:15:01 | 3053 | 1.35| 0 |
Проблема данной структуры в том, что при выборке (select * from data where ID=15 and DT<='12-03-2004 19:15:01' desc limit 0,1)Union(select * from data where ID=3053 and DT<='12-03-2004 19:15:01' desc limit 0,)… уходит очень много времени, а сервер сильно загружается таким запросом.
Второй вариант хранение каждой переменной в отдельной таблице с индексированным полем дата. Этот вариант всем хорош кроме того что перегружается дисковая система поскольку обращение идет к 4000 таблиц с следующей структурой:
TableName A15
|DT (IDX) | Value | Trust|
12-03-2004 19:15:01 | 543.24| 0 |
TableName A3053
|DT (IDX) | Value | Trust|
12-03-2004 19:15:01 | 1.35| 0 |
Запрос к данным выглядит следующим образом:
(SELECT *,0 FROM A4592 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,1 FROM A4593 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,2 FROM A4594 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,3 FROM A4596 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,4 FROM A4595 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,5 FROM A4588 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,6 FROM A4589 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,7 FROM A4590 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,8 FROM A4591 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,9 FROM A4583 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,10 FROM A4584 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,11 FROM A4585 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)UNION(SELECT *,12 FROM A4586 WHERE D<=1071317389750 ORDER BY D DESC LIMIT 1)
В данной структуре архива MySQL загружается максимум на 10 процентов, что дало возможность использования данной структуры архива.
Каким образом можно организовать хранение данных, чтобы минимально использовать дисковую подсистему SQL сервера с максимальной скоростью выборок различного набора переменных за определенный срез времени?
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
18198
|
|