Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица для хранения логов / 8 сообщений из 8, страница 1 из 1
10.08.2020, 13:25
    #39988159
Zhenek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
Добрый день. Прошу совета и помощи.
Есть таблица log

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
-- phpMyAdmin SQL Dump
-- version 4.9.5
-- https://www.phpmyadmin.net/
--
-- Хост: 127.0.0.1
-- Время создания: Авг 10 2020 г., 13:19
-- Версия сервера: 5.6.48-88.0-log
-- Версия PHP: 5.6.40

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";

--
-- База данных: `insure`
--

-- --------------------------------------------------------

--
-- Структура таблицы `log`
--

CREATE TABLE `log` (
  `id` int(100) NOT NULL,
  `user` int(100) NOT NULL,
  `time` varchar(200) NOT NULL,
  `text` text NOT NULL,
  `type` varchar(100) NOT NULL,
  `ip` varchar(100) NOT NULL,
  `post` text NOT NULL,
  `full` int(10) NOT NULL,
  `task` int(100) NOT NULL,
  `delTime` varchar(100) NOT NULL,
  `isReason` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `log`
--
ALTER TABLE `log`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `id` (`id`),
  ADD KEY `task` (`task`),
  ADD KEY `id_2` (`id`,`task`),
  ADD KEY `user` (`user`),
  ADD KEY `delTime` (`delTime`);
ALTER TABLE `log` ADD FULLTEXT KEY `ip` (`ip`);
ALTER TABLE `log` ADD FULLTEXT KEY `text` (`text`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `log`
--
ALTER TABLE `log`
  MODIFY `id` int(100) NOT NULL AUTO_INCREMENT;
COMMIT;



В ней хранится история всяких разных действий. Неожиданно таблица разрослась до 27ГБ
Сейчас я даже не могу удалить с нее часть данных, OPTIMIZE тоже после минут 10 работы роняет базу.
Ключей сделал много, для каждого конкретного запроса.
Сейчас нужно удалить все данные
Код: sql
1.
 DELETE FROM log WHERE delTime!='' AND delTime<'1597048383';              


Вот примерно таким запросом. Индекс используется.
Но данные удаляются в час по чайной ложке, а в Phpmyadmin общее кол-во постоянно скачет. то 3 млн, через минуту показывает 12.

Собственно 2 вопроса:

1. Как все-же удалить/оптимизировать
2. Как лучше хранить такие данные, при условии, что я не хотел бы их удалять вообще и таблица могла рости до 100/200гб. данные не изменяемые. Используется полнотекстовой поиск
...
Рейтинг: 0 / 0
10.08.2020, 19:38
    #39988382
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
Zhenek
Как все-же удалить/оптимизировать
Скопировать нужное в другую таблицу аналогичной структуры, переименовать эту, переименовать новую в старую, проверить результат, дропнуть старую под новым названием.
Zhenek
Как лучше хранить такие данные
Партицировать (секционировать), например, по дате.
...
Рейтинг: 0 / 0
10.08.2020, 20:01
    #39988387
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
Zhenek
Код: sql
1.
`ip` varchar(100) NOT NULL,

обычные ip-адреса прекрасно лезут в 4-байтовое целое. А зачем на него фуллтекст индекс - не представляю.

Zhenek
Код: sql
1.
`task` int(100) NOT NULL,

Не бывает int(100). Это все равно 2147483647 максимум.
Zhenek
Код: sql
1.
`time` varchar(200) NOT NULL,

Код: sql
1.
`delTime` varchar(100) NOT NULL,

Есть же специальные типы данных для даты/времени. Они и компактнее, и индексируются как положено.
...
Рейтинг: 0 / 0
10.08.2020, 20:06
    #39988389
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
Zhenek
Код: sql
1.
delTime<'1597048383'

Сравнивать числа строками - вообще логически неверно.
'159704839'<'1597048383' даст false, хотя 159704839<1597048383 даст true.
...
Рейтинг: 0 / 0
10.08.2020, 23:06
    #39988438
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
У вас дико нелепые ошибки проектирования таблицы. Неудивительно, что она тормозит и с ней невозможно работать.
Почитайте что-нибудь про типы полей в базах данных, про типы полей MySQL в частности, и как оптимально упаковывать в эти типы ваши данные.
...
Рейтинг: 0 / 0
11.08.2020, 03:33
    #39988464
Zhenek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
авторУ вас дико нелепые ошибки проектирования таблицы. Неудивительно, что она тормозит и с ней невозможно работать.
Почитайте что-нибудь про типы полей в базах данных, про типы полей MySQL в частности, и как оптимально упаковывать в эти типы ваши данные.


К сожалению эти ошибки тянутся очень давно, и до определенного времени не давали о себе знать.
Сейчас, чтобы их исправить нужно как-то работать с таблицей, а это невозможно.простые запросы виснут.

Вот сделал новую структуру, посмотрите кому не сложно, подойдет ли.
И буду в нее копировать данные из старой таблицы.

http://sqlfiddle.com/#!9/f8e049/1
...
Рейтинг: 0 / 0
12.08.2020, 00:00
    #39988796
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
Zhenek
Вот сделал новую структуру, посмотрите кому не сложно, подойдет ли.
Код: sql
1.
2.
3.
`text` text NOT NULL,
`type` varchar(10) NOT NULL,
 `post` text NOT NULL

Если у вас предполагается скоростная работа с большим объемом данных, то избавиться от текстовых полей в основной таблице логов может быть неплохой идеей.
...
Рейтинг: 0 / 0
17.08.2020, 08:30
    #39990252
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица для хранения логов
Zhenek
Как лучше хранить такие данные, при условии, что я не хотел бы их удалять вообще и таблица могла рости до 100/200гб. данные не изменяемые. Используется полнотекстовой поиск

Также, как делали диды: текстовые файлы, ротация, tar.gz, grep :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица для хранения логов / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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