powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильно обнулить поля в большой таблице
8 сообщений из 8, страница 1 из 1
Правильно обнулить поля в большой таблице
    #40080529
flycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется innodb таблица в MySQL (конкретно, кластер MariaDB 10.3.23):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
MariaDB [(none)]> select count(*) from statistic;
+-----------+
| count(*)  |
+-----------+
| 717573020 |
+-----------+
1 row in set (2 min 49.312 sec)

MariaDB [(none)]> select count(*) from statistic where `post_id` is not null;
+----------+
| count(*) |
+----------+
| 67237829 |
+----------+
1 row in set (32.816 sec)


Есть необходимость обнулить все post_id, которые not null. Как это сделать? Интересует, помимо порционности:
Код: sql
1.
update statistic set post_id=NULL where post_id is not null and date >= FROM_UNIXTIME(1552780800) and date <= FROM_UNIXTIME(1553644800)


как быть с тем, что таблица "распухает"? Нужно потом делать анализ/оптимизацию? Или сама со временем устаканится? Как это потом по кластеру разойдётся?
...
Рейтинг: 0 / 0
Правильно обнулить поля в большой таблице
    #40080537
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flycat
Есть необходимость обнулить все post_id, которые not null. Как это сделать?

А тут нет иного варианта как UPDATE:
Код: sql
1.
2.
3.
update statistic 
set post_id=NULL 
where post_id is not null


Остальное, мягко говоря, не очень понятно.
...
Рейтинг: 0 / 0
Правильно обнулить поля в большой таблице
    #40080560
flycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Вариант, как минимум, тот, что я написал: делать апдейты не разом, а интервалами по времени - чтобы не положить базу нагрузкой по вводу-выводу.
Что именно Вам не понятно - мне тоже непонятно :) - вроде же очевидно, что при замене значений поля на NULL таблица будет фрагментироваться. С этим надо как-то бороться. Вот я и спрашиваю совета, как именно.
...
Рейтинг: 0 / 0
Правильно обнулить поля в большой таблице
    #40080561
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flycatкак быть с тем, что таблица "распухает"? так может нужен delete?
...
Рейтинг: 0 / 0
Правильно обнулить поля в большой таблице
    #40080562
flycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov, Имеете в виду, удалить поле целиком? Боюсь, сделать это без блокировки таблицы на работающей базе не получится.
...
Рейтинг: 0 / 0
Правильно обнулить поля в большой таблице
    #40080581
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flycat,

речь о записях
смысл то какой ставить NULL?
...
Рейтинг: 0 / 0
Правильно обнулить поля в большой таблице
    #40080615
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flycat
Вариант, как минимум, тот, что я написал: делать апдейты не разом, а интервалами по времени - чтобы не положить базу нагрузкой по вводу-выводу.
Почему по времени-то? почему не просто LIMIT?

flycat
при замене значений поля на NULL таблица будет фрагментироваться.

С какого это перепугу? поле NULLable, значит, в ПК не входит.
...
Рейтинг: 0 / 0
Правильно обнулить поля в большой таблице
    #40080674
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавить поле нулл
переименовать поле post_id
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильно обнулить поля в большой таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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