Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Партиционирование (фрагментирование) / 8 сообщений из 8, страница 1 из 1
04.07.2005, 17:33:16
    #33148642
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
Добрый день.

Есть ли в MySql функциональность аналогичная партиционированию в Oracle.

Поясню, что имею в виду - со временем одна табличка в базе данных выросла до неимоверных размеров. Есть желание разбить ее на несколько файлов - по периодам. Файлы отвечающие за старые периоды редко используются; файл, соответствующий текущему периоду, не так уж и велик.

Можно ли в MySql "размазать" табличку по нескольким файлам, но так, чтобы это было прозрачно для клиента? То есть, для клиента есть одна логическая сущность - таблица, а как она размазана по файлам - уже дело физическая реализация и это только дело сервера.
...
Рейтинг: 0 / 0
04.07.2005, 19:09:44
    #33148826
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
MERGE в документации
...
Рейтинг: 0 / 0
14.07.2005, 12:25:04
    #33165561
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
Не совсем оно. Select-ы прозрачны для приложения, а вот с insert гораздо хуже. То есть, все возможности порулить этим процессом своядтся к FIRST/LAST - непосредственным указанием файла, куда вставляется запись.

Мне же хотелось, чего то такого (псевдокод):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    create table testtable(
      id     integer,
      key  integer,
      description varchar()
    ) partioning by key
          1 .. 3  to file ".....",
          4 .. 10  to file "...",
         else to file "....";

При этом по заданным условиям разделения записей по файлам сервер определяет где брать и куда вставлять записи. А вот со вставкой у MERGE таблиц проблемы. Жаль - счастье казалось близким :)
...
Рейтинг: 0 / 0
14.07.2005, 12:29:41
    #33165579
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
Насколько я понимаю, к таблицам, используемым как часть MERGE есть также и доступ как к обычной таблице MyISAM, нужно лишь реализовать в клиенте логику, чтобы инсерты шли к нужной таблице... Не слишком-то удобно, конечно, но...
...
Рейтинг: 0 / 0
14.07.2005, 12:36:22
    #33165604
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
нужно лишь реализовать в клиенте логику, чтобы инсерты шли к нужной таблице..

Угу, но я то хотел:

Можно ли в MySql "размазать" табличку по нескольким файлам, но так, чтобы это было прозрачно для клиента ? То есть, для клиента есть одна логическая сущность - таблица, а как она размазана по файлам - уже дело физическая реализация и это только дело сервера.

А раз клиента менять все равно надо, то я не вижу проблем и с разнесением таблички на 2 других - обычных.
...
Рейтинг: 0 / 0
14.07.2005, 12:43:58
    #33165634
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
По одной таки выборки делать удобнее... Хотя может такие выборки и не нужны.
...
Рейтинг: 0 / 0
28.07.2005, 03:29:12
    #33188108
beastie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
помница на этот счет было что-то типа RAID_TYPE.
глянь, может оно.
...
Рейтинг: 0 / 0
28.07.2005, 14:38:18
    #33189524
Zipo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование (фрагментирование)
Я не сильно понимаю необходимость разделения таблицы на несколько. В чем суть то? Увеличить скорости работы БД с этой таблицей?

Таблицы MERGE, создавались не с этой целью. У mysql было (или есть и сейчас) ограничение на размер 1 таблицы вроде что-то около 3 гиг (это вроде связано не с самой БД, а с файловой системой фат).

Если Вы хотите увеличить скорость работы. То просто создайте подходящий индекс в этой таблице. К примеру tinyint который разобъет таблицу по годам. Хранить информацию в этом поле начиная к примеру с 1900 года, тогда в это поле без проблем уместится 255 лет вплоть до 2155 года. Поле это маленькое индекс большим не будет. При выборках для работы этого индекса необходимо ставить в условии (where) первым именно условие на это поле.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Партиционирование (фрагментирование) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]