|
|
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть ли в MySql функциональность аналогичная партиционированию в Oracle. Поясню, что имею в виду - со временем одна табличка в базе данных выросла до неимоверных размеров. Есть желание разбить ее на несколько файлов - по периодам. Файлы отвечающие за старые периоды редко используются; файл, соответствующий текущему периоду, не так уж и велик. Можно ли в MySql "размазать" табличку по нескольким файлам, но так, чтобы это было прозрачно для клиента? То есть, для клиента есть одна логическая сущность - таблица, а как она размазана по файлам - уже дело физическая реализация и это только дело сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 17:33:16 |
|
||
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
MERGE в документации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 19:09:44 |
|
||
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
Не совсем оно. Select-ы прозрачны для приложения, а вот с insert гораздо хуже. То есть, все возможности порулить этим процессом своядтся к FIRST/LAST - непосредственным указанием файла, куда вставляется запись. Мне же хотелось, чего то такого (псевдокод): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. При этом по заданным условиям разделения записей по файлам сервер определяет где брать и куда вставлять записи. А вот со вставкой у MERGE таблиц проблемы. Жаль - счастье казалось близким :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 12:25:04 |
|
||
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, к таблицам, используемым как часть MERGE есть также и доступ как к обычной таблице MyISAM, нужно лишь реализовать в клиенте логику, чтобы инсерты шли к нужной таблице... Не слишком-то удобно, конечно, но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 12:29:41 |
|
||
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
нужно лишь реализовать в клиенте логику, чтобы инсерты шли к нужной таблице.. Угу, но я то хотел: Можно ли в MySql "размазать" табличку по нескольким файлам, но так, чтобы это было прозрачно для клиента ? То есть, для клиента есть одна логическая сущность - таблица, а как она размазана по файлам - уже дело физическая реализация и это только дело сервера. А раз клиента менять все равно надо, то я не вижу проблем и с разнесением таблички на 2 других - обычных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 12:36:22 |
|
||
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
По одной таки выборки делать удобнее... Хотя может такие выборки и не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 12:43:58 |
|
||
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
помница на этот счет было что-то типа RAID_TYPE. глянь, может оно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 03:29:12 |
|
||
|
Партиционирование (фрагментирование)
|
|||
|---|---|---|---|
|
#18+
Я не сильно понимаю необходимость разделения таблицы на несколько. В чем суть то? Увеличить скорости работы БД с этой таблицей? Таблицы MERGE, создавались не с этой целью. У mysql было (или есть и сейчас) ограничение на размер 1 таблицы вроде что-то около 3 гиг (это вроде связано не с самой БД, а с файловой системой фат). Если Вы хотите увеличить скорость работы. То просто создайте подходящий индекс в этой таблице. К примеру tinyint который разобъет таблицу по годам. Хранить информацию в этом поле начиная к примеру с 1900 года, тогда в это поле без проблем уместится 255 лет вплоть до 2155 года. Поле это маленькое индекс большим не будет. При выборках для работы этого индекса необходимо ставить в условии (where) первым именно условие на это поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 14:38:18 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33148642&tid=1853813]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
36ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
3ms |
| others: | 204ms |
| total: | 396ms |

| 0 / 0 |
