LEOnidUKG

LEOnidUKG
Рейтинг
1776
Регистрация
25.11.2006
Должность
PHP
Интересы
Программирование

edogs, мне реально глубоко пофигу, что и как там что считает :)

Я поделился новинкой. которую реализовали в MariaDB. Кому надо заюзают, кому не надо пусть живут дальше.

edogs:
Если структура правильная и вынесено, то можно сжимать всю таблицу, а не по колонкам, не теряя возможности индексации и других возможностей.

Чем это вдруг стало не подходить? https://dev.mysql.com/doc/refman/5.7/en/innodb-compression-usage.html без потери индексации, в этом вопрос.

Вы сами тестировали сжатые таблицы полностью? Я тестировал. Это УГ на динамических проектах. Именно в этом и проблема, что индексы тоже сжимаются, и чтобы их считать они разжимаются каждый раз.

А тут и индексы целы и информация сжата.

---------- Добавлено 13.11.2019 в 18:45 ----------

Вот есть тесты по сжатию персоны:

https://mydbops.wordpress.com/2019/10/06/save-space-on-mysql-data-with-column-compression/

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



---------- Добавлено 13.11.2019 в 19:08 ----------

-= Serafim =-:
Спасибо. Тогда попробуем ужать, протестировать, а то есть много больших баз со статьями, если не будет падения производительности, то можно будет выиграть много в размерах баз.

Только рекомендую делать так:

1. Сделать копию таблицы, можно даже через phpmyadmin. Просто когда будет делаться копия, она будет делаться на чистую и если было много удалений в таблице, то они тоже очистятся и освободится место. Напоминаю, что при InnoDB данные не удаляются, а просто помечаются как удалённые и скрываются, и место не освобождается.

2. Ужать всё, что надо на копии таблицы

3. Переименовать таблицы копию на OLD, а копию переименовать на оригинал.

foxi:
LEOnidUKG, вообще я похожую схему на sqlite юзаю, blob поле и в нем сжатый на php текст 1-3к знаков через gzdeflate с 9 степенью сжатия. Размер базы в 3 раза экономится.
Нагрузка на проц упала, т.к. стало быстрее выполняться чтение с диска и быстрее высвобождаться ресурсы. Но так по идее на расжатие расход проца должен быть на процентов 10-15 больше.

Я тоже такое юзаю для доров. И хотел найти такое же, но без изменения скриптов и структуры данных. И оказывается реализовали. Кстати это ещё раньше появилось в Percona Server Mysql, там более расширенный функционал.

Просто процессоры это не только гигагерцы, это ещё всякие интересные инструкции и сопроцессоры, которые помогают как раз выполнять сжатие и разжатие + не забываем, что разжатие идёт с распределением по всем ядрам т.е. это долисекунды для многоядерного сервера. А вот чтение с диска, это более дорогое удовольствие в плане скорости. На современных веб сервера уже давно всё упёрлось в диск, процессор просто отдыхает в основном. Да и Чё?! ему делать то? 1 раз просчитать мелкий PHP скрипт, а потом заниматься передачей данных с диска пользователю.

т.к. декомпрессия все же проц грузит.

Да ничего она не грузит. Уже давно не IBM386 стоит. То что, у большинство nginx сжимает на лету данные и отдаёт клиенту в доли секунды не напрягает, никто не париться.

Кто же спорит, если у вас там по 1 ляму посетителей на сайте, там уже по другому надо делать и решать. И то возможно при стресс тестах там всё будет нормально.

Я же говорю о новинке, которая может пригодиться как и мне.

нужно выносить в отдельную таблицу, если они на фиг не нужны для работы с ними

Вот как раз для этого, чтобы НЕ выносить и НЕ менять структуру рабочего проекта и реализовали такой функционал. НО! Если даже структуру "правильная", почему и не сжать тоже эти данные массивные.



---------- Добавлено 13.11.2019 в 11:56 ----------

-= Serafim =-:
LEOnidUKG, а нет каких-то цифр на больших базах для сравнения? На сколько отличается разница в производительности - возможно, можно как-то сравнить.

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

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

---------- Добавлено 13.11.2019 в 12:05 ----------

foxi:
-= Serafim =-, надо чтоб в ячейках были объемные данные

Именно так, поэтому я сжимал новостной сайт, где текст новости 2500-5000 знаков. Сжимать данные до 255 символов не вижу смысла реального.

доступ можете на файлы в личку скинуть? Я что-то в такие чудеса не верю. Возможно при подключении не учитывается кодировка.

В меню, "Кодировка", стоит utf-8?

Визуально всё ли читается в самом файле, никаких проблем кодировкой нет?

Теперь создавайте БД новый и туда заливайте этот архив

Сделайте экспорт БД и посмотрите, через notepad++ в UTF8 всё ли там. И сделайте импорт в чистую другую базу.

Что-то сомневаюсь, что там всё ок :)

База в UTF-8, сравнение стоит utf8_general_ci.

У каждой таблице такое или там у нас latin стоит у всех таблиц?

В PHPmyadmin отображается всё нормально?

И урл сайта покажите.

Обмен шила на мыло.

Всего: 31516