powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица для хранения логов
8 сообщений из 8, страница 1 из 1
Таблица для хранения логов
    #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
Таблица для хранения логов
    #39988382
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhenek
Как все-же удалить/оптимизировать
Скопировать нужное в другую таблицу аналогичной структуры, переименовать эту, переименовать новую в старую, проверить результат, дропнуть старую под новым названием.
Zhenek
Как лучше хранить такие данные
Партицировать (секционировать), например, по дате.
...
Рейтинг: 0 / 0
Таблица для хранения логов
    #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
Таблица для хранения логов
    #39988389
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhenek
Код: sql
1.
delTime<'1597048383'

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


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

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

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

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

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


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