Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Большие таблицы в Oracle

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
hooky-mars



Зарегистрирован: 03.01.2006
Сообщения: 39

СообщениеДобавлено: Чт Мар 15 2007 10:49    Заголовок сообщения: Большие таблицы в Oracle Ответить с цитатой

Saluer!

Такая ситуация. В начале каждого месяца содается таблица <что-то>mmyyyy в нее каждый день вносятся данные (около 500 тыс. записей). В результате в конце месяца получается просто огроменная таблица, и их кол-во будет увеличивытся. В идеалие информация должана храница в течении 5 лет.
Так вот в любой момент может понадобится информация за эти 5 лет. При чем поиск надо производить автоматически.
Но я даже не представляю как автоматически сотавить подобный запрос (select * from <что писать тут?>). Как определить существуютли таблицы за указанный период, и желательно чтоб это работало пошустрее.
Может создать какоето хитрое представление? но, ведь там тоже надо указть список таблиц.
Подскажите что можно сделать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
OverCPU



Зарегистрирован: 04.02.2007
Сообщения: 61

СообщениеДобавлено: Пт Мар 16 2007 00:55    Заголовок сообщения: Ответить с цитатой

Именно в Oracle такую проблему не решал а вот в MySQL сталкивался при работе с Огромными базами.
Решть можно так:
Попробуй к примеру создовать доп тоблицу раз в сутки называя ее текущей датой к примеру 20070315 тоесть у тебя на кадый день получиться 1 таблица. Для облегчения поиска создай таблицу которая будет запоминать имя и дату(В ней ищиш дату, когда найдеш дату обращаешся к нужной таблици по найденому названию).
_________________
OverNet - Конец Inet'a
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Пт Мар 16 2007 09:10    Заголовок сообщения: Ответить с цитатой

В Oracle это решается партиционированием базы данных.
Поддерживается только в версии Enterprise.

У нас SMS-ки там лежат. В праздники их до миллиона в сутки может быть.
Партиции разбиты по неделям.
Поиск и выборка за любой период занимает доли секунды.

Работает все на DL-380. Правда хранилище базы на такой вот железке:

http://www.hds.com/products_services/storage_systems/modular_storage/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
hooky-mars



Зарегистрирован: 03.01.2006
Сообщения: 39

СообщениеДобавлено: Пт Мар 16 2007 16:01    Заголовок сообщения: Ответить с цитатой

OverCPU писал(а):
Именно в Oracle такую ...


Уже начал работать по такой схеме, токо не подням а по месяцам.

To and3008
А можно по подробнее? Где проэто почитать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
hooky-mars



Зарегистрирован: 03.01.2006
Сообщения: 39

СообщениеДобавлено: Пт Мар 16 2007 16:47    Заголовок сообщения: Ответить с цитатой

Я нашол как работать с парититионами, но мне надо разбить разделы по датам, а на скоко я понл парититионы позволяют содавать разделы по записям. Или это не так?
И еще, такая разбитая таблица будет обрабатываться быстрее, чем единая?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
hooky-mars



Зарегистрирован: 03.01.2006
Сообщения: 39

СообщениеДобавлено: Пн Мар 19 2007 09:40    Заголовок сообщения: Ответить с цитатой

И как организовать поле автоинкремента? на всю таблицу одна последовательность?
И если я сделаю разделы по месяцам, то при выборке обращение будт происходить к соответсвующему разделу или ко всей таблице?
Вот пример:
Код:

create aaa(id number,
cdate date,.....)
....
PARTITION P1 VALUES LESS THAN (to_date('01-04-1999','DD-MM-YYYY')),
PARTITION P2 VALUES LESS THAN (to_date('01-07-1999','DD-MM-YYYY')))
/
select * from aaa where cdate between '01-04-1999' and '10-04-1999'
/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
PR



Зарегистрирован: 05.06.2007
Сообщения: 2

СообщениеДобавлено: Вт Июн 05 2007 14:50    Заголовок сообщения: Ответить с цитатой

Есть интересная тема, которая может помочь в данном вопросе, реализованная конкретно в Oracle. Это материализованные вьюшки (materialized view, пр.: create materialized view my_all_objects), которые прекрасно описаны во втором томе у Том Кайта. Они рассчитаны как раз для работы с очень большими таблицами. На первый взгляд может показаться, что использовать этот механизм сложно и запутанно, но страшного ничего нет (пробовал сам - успешно "тема" себя зарекомендовала). В завершение слов скажу цитатой из книги - "...повышение производительности. Получив (однажды) ответы на сложные вопросы, можно существенно снизить нагрузку на сервер. При этом:
1) Уменьшается количество физических чтений. Приходится просматривать меньше данных.
2) Уменьшается количество записей. Не нужно так часто сортировать/агрегировать данные.
3) Уменьшается нагрузка на процессор. Не придется постоянно вычислять агрегаты и функции от данных, поскольку это уже сделано.
4) Существенно сокращается время ответа. При использовании итоговых данных запросы выполняются значительно быстрее по сравнению с запросами к исходным данным.". А партиционирование базы данных это не лучший вариант, на мой взгляд.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...