powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Партицирование Timestamp
10 сообщений из 10, страница 1 из 1
Партицирование Timestamp
    #39885594
jus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jus
Гость
Добрый день. Имеется таблица:
CREATE TABLE test.tab_part(
date_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
user_id int(5) DEFAULT NULL
);
Нужно сделать партиции по существующей таблице через alter table на сегодняшний и вчерашний день через вызов now() .
Делал так:
ALTER TABLE tab_partPARTITION BY RANGE (UNIX_TIMESTAMP(date_time ))
(PARTITION p2019_11_06 VALUES LESS THAN (NOW()),
PARTITION p2019_11_05 VALUES LESS THAN (date_add(NOW(), INTERVAL -1 DAY)));
Получаю ошибку:
Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
Изучив все, что пишут - не нашел ответа для себя.
Понятно, что поле должно быть INT, но варианты с to_days/UNIX_TIMESTAMP и остальные попытки не дали результаты.
Помогите разобраться, что не так?
Либо если есть другие варианты как получить партиции за сегодня и вчера.
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885644
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторLESS THAN (NOW()),

И как это должно работать? Каждую 0.000001с перемещать строки?

Партицирование должно выполняться по постоянному признаку. Например, все строки по полю от 2019-11-01 до 2019-12-01. PARTITION BY RANGE (date_time ) PARTITION p2019_11_06 VALUES LESS THAN ('2019-11-07') если меня память о синтаксисе mysql не обманывает.
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885657
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jus
Нужно сделать партиции по существующей таблице
Любое изменение начинается с ответа на вопросы: зачем это будет сделано? какой от этого планируется профит?

Пока нет ответов - и вопрос, и даже само мероприятие, не имеют смысла.
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885669
jus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jus
Гость
Melkij, ok.
К примеру, делаю
ALTER TABLE tab_part PARTITION BY RANGE (to_days(date_time ))
(PARTITION p2019_11_06 VALUES LESS THAN (to_days(NOW())),
PARTITION p2019_11_05 VALUES LESS THAN (to_days(date_add(NOW(), INTERVAL -1 DAY))));
Получаю ту же ошибку.
Здесь же постоянный признак? Получено точное число в 1 день.
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885671
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jus
Здесь же постоянный признак?
Нет. NOW() явно не тянет на "постоянный"...
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885674
jus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jus
Гость
Akina, где-то в правилах форума есть вопрос зачем user это делает.
Это часть очень большой задачи, которой я интересуюсь. Хочу сделать маленькую, чтобы решить большую.
Большая заключается, в партицировании таблицы по дням и разные функции к этому.
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885675
jus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jus
Гость
Akina, to_days(now()) не тянет? Почему?
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885676
jus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jus
Гость
Akina, из-за того что будет изменяться изо дня в день? Из-за этого?
То есть по синтаксису там всегда конкретное значение? не переменное ото дня?
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885717
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jus
из-за того что будет изменяться изо дня в день? Из-за этого?
Именно. Принцип партиционирования (точнее, один из) - до тех пор, пока описание партиции не будет изменено, запись попадает в эту партицию независимо ни от чего. Детерминированность, иным словом. А у тебя, будь возможно то, что ты пытаешься сделать, попавшая сегодня в партицию запись завтра туда не попадёт.
...
Рейтинг: 0 / 0
Партицирование Timestamp
    #39885795
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jus
в партицировании таблицы по дням
Вот это и надо было спрашивать.

https://dev.mysql.com/doc/refman/8.0/en/partitioning-types.html A very common use of database partitioning is to segregate data by date. Some database systems support explicit date partitioning, which MySQL does not implement in 8.0. However, it is not difficult in MySQL to create partitioning schemes based on DATE, TIME, or DATETIME columns, or based on expressions making use of such columns.

When partitioning by KEY or LINEAR KEY, you can use a DATE, TIME, or DATETIME column as the partitioning column without performing any modification of the column value. For example, this table creation statement is perfectly valid in MySQL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE members (
    firstname VARCHAR(25) NOT NULL,
    lastname VARCHAR(25) NOT NULL,
    username VARCHAR(16) NOT NULL,
    email VARCHAR(35),
    joined DATE NOT NULL
)
PARTITION BY KEY(joined)
PARTITIONS 6;
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Партицирование Timestamp
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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