|
|
|
Запрос из множества таблиц union all
|
|||
|---|---|---|---|
|
#18+
Коллеги! Некая система складывает логи в таблицы MySQL. При этом, по чуднОй прихоти, она автоматически по своим внутренним (условно непонятным) законам разбивает таблицы на "партиции". Например: fgtadom3-wlog-1413924600, fgtadom3-wlog-1413895080, и т.п. для сущности fgtadom3-wlog. При разбиении таблиц она ведет некую метатаблицу, где хранятся имена этих "партиций", дата начала, окончания партиции, и т.п.. Задача - собрать все партиции в одну таблицу, и делать выборки по всем логам как по плоской таблице. Решение union all может помочь только при статическом наборе партиций, у меня-же он растет со временем. Можно-ли средствами MySQL без привлечения кодинга на CPP решить эту задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:34:54 |
|
||
|
Запрос из множества таблиц union all
|
|||
|---|---|---|---|
|
#18+
Anton anisimov, если исходные таблицы - myisam, то может помочь merge engine . В противном (более вероятном) случае, наверное нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:40:53 |
|
||
|
Запрос из множества таблиц union all
|
|||
|---|---|---|---|
|
#18+
Anton anisimovРешение union all может помочь только при статическом наборе партиций, у меня-же он растет со временемВ merge тоже придётся переопределять набор, но там это разовая операция - пересоздали "общую" таблицу, потом работаете с ней как обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:42:23 |
|
||
|
Запрос из множества таблиц union all
|
|||
|---|---|---|---|
|
#18+
Из INFORMATION_SCHEMA TABLES Table выбираете таблицы по шаблону и далее на основе этой выборки строите запрос. Строите либо на клиенте, либо процедурно в MySQL с помощью prepared statements . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:43:50 |
|
||
|
Запрос из множества таблиц union all
|
|||
|---|---|---|---|
|
#18+
tanglir, Во-первых, InnoDB. Во-вторых: mysql.comTo remap a MERGE table to a different collection of MyISAM tables, you can use one of the following methods: DROP the MERGE table and re-create it. Use ALTER TABLE tbl_name UNION=(...) to change the list of underlying tables. It is also possible to use ALTER TABLE ... UNION=() (that is, with an empty UNION clause) to remove all of the underlying tables. However, in this case, the table is effectively empty and inserts fail because there is no underlying table to take new rows. Such a table might be useful as a template for creating new MERGE tables with CREATE TABLE ... LIKE. Задача-же стоит, скорее, в создании view в понимании Oracle, который объединит все таблицы динамически по динамическому списку. MyISAM дает статическое объединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:47:07 |
|
||
|
Запрос из множества таблиц union all
|
|||
|---|---|---|---|
|
#18+
miksoft, Склоняюсь к этому решению. Видимо, придется делать свою функцию, которая будет генерировать стейтменты для динамического запроса по той "метатаблице", которую ведет это долбаный поставщик логов.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:49:39 |
|
||
|
Запрос из множества таблиц union all
|
|||
|---|---|---|---|
|
#18+
Anton anisimovПри разбиении таблиц она ведет некую метатаблицу, где хранятся имена этих "партиций", дата начала, окончания партиции, и т.п.А эта самая надтаблица - она доступна? чего в INFORMATION_SCHEMA лезть? Особенно если в запросах к объединённому отбору есть фильтр по дате... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:38:36 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38783926&tid=1834045]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 310ms |

| 0 / 0 |
