powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Партиционирование (фрагментирование)
8 сообщений из 8, страница 1 из 1
Партиционирование (фрагментирование)
    #33148642
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

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

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

Можно ли в MySql "размазать" табличку по нескольким файлам, но так, чтобы это было прозрачно для клиента? То есть, для клиента есть одна логическая сущность - таблица, а как она размазана по файлам - уже дело физическая реализация и это только дело сервера.
...
Рейтинг: 0 / 0
Партиционирование (фрагментирование)
    #33148826
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MERGE в документации
...
Рейтинг: 0 / 0
Партиционирование (фрагментирование)
    #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
Партиционирование (фрагментирование)
    #33165579
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю, к таблицам, используемым как часть MERGE есть также и доступ как к обычной таблице MyISAM, нужно лишь реализовать в клиенте логику, чтобы инсерты шли к нужной таблице... Не слишком-то удобно, конечно, но...
...
Рейтинг: 0 / 0
Партиционирование (фрагментирование)
    #33165604
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно лишь реализовать в клиенте логику, чтобы инсерты шли к нужной таблице..

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

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

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

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

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


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