Оптимизация БД таблицы типа MEMORY

1 23
S1
На сайте с 02.10.2016
Offline
138
#21

В общем не нашел какие именно команды можно писать в этот Plesk

Написал скрипт для планировщика.

Пришлось открывать учебник, так как я технарь, а не кодер.

Делал для php7. Посмотрите, может что-то упустил.

Возможно еще кому-то понадобится.

<?php

$host = '11111'; // хост
$mysqluser = '11111'; // юзер mysql
$mysqlpass = '11111'; // пароль юзера
$bdname = '11111'; // имя БД


$Link = MySQLi_Connect($host, $mysqluser, $mysqlpass, $bdname) or die ("Ошибка подключения: ".mysqli_connect_error() );
mysqli_query($Link, "SET NAMES utf8");

if ($result = MySQLi_Query($Link, "ALTER TABLE `xf_session_activity` ENGINE = MEMORY") )
{
echo "Запрос выполнен";
MySQLi_Free_Result($result);
}

else
{
printf("Ошибка: %s\n", MySQLi_Error($link));
MySQLi_Free_Result($result);
echo "Запрос не выполнен";
}

MySQLi_Close($Link);

?>
Постоянно обмениваюсь ссылками с качественными сайтами по теме электроника, электронные компоненты, и тд.
Aisamiery
На сайте с 12.04.2015
Offline
293
#22

Ну если взять пример импорта дампа БД, то в крон можно запихнуть конструкцию вида

echo "ALTER TABLE `xf_session_activity` ENGINE = MEMORY;" | mysql -u user -ppassword dbname

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

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
N
На сайте с 06.05.2007
Offline
419
#23
sanek1991:
Если детально, то движок - xenforo v2.1
Таблица - xf_session_activity

так вам надо было просто в настройках движка поменять время хранения сессий.. и перестать делать вид что форум посещаемый!

что там по-умолчанию было ? 15 минут? оставьте 15 минут.

Кнопка вызова админа ()
S1
На сайте с 02.10.2016
Offline
138
#24
netwind:
так вам надо было просто в настройках движка поменять время хранения сессий

нет таких настроек

да и для сессий там другая таблица - xf_session

там еще таблица журналов растет, вот ее ограничил в настройках временем и размером

netwind:
.. и перестать делать вид что форум посещаемый!

с чего взяли ?

форум скромный, специфический, всего 15 - 20K в сутки )

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

полез туда потому как она достигла предела по размерам, и вылезло сообщение xf_session_activity is full

и перед этим стало подтормаживать, после ужимания опять стал быстро открывать страницы

а вообще в таблице вот такая инфа

jpg 1.jpg
danforth
На сайте с 18.12.2015
Offline
153
#25
Aisamiery:
правда я бы сделал туда юзера только с правами на эту таблицу и всё, так как пароль открыто будет фигурировать везде где не надо

на самом деле все намного проще, в домашней директории делается .my.cnf с содержимым:


[client]
host=127.0.0.1
user=user
password=password

а саму команду можно упростить до:


mysql dbname -e "OPTIMIZE TABLE `xf_session_activity`"

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

Junior Web Developer
N
На сайте с 06.05.2007
Offline
419
#26
sanek1991:
с чего взяли ?
форум скромный, специфический, всего 15 - 20K в сутки )

Значит есть какие-то другие сходные настройки.

Это типовое поведение в сегменте. Владельцы форумов завышают настройки чтобы при визите на главную был виден список пользователей "Сейчас на форуме 20K пользователей!".

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

Есть еще вариант, что там было периодическое задание очистки таблицы и оно сломалось.

Это же коробочный движок. Он задуман так чтобы работать хорошо в типовых случаях.

Aisamiery
На сайте с 12.04.2015
Offline
293
#27

danforth, optimize table работает только для MyISAM таблиц

danforth
На сайте с 18.12.2015
Offline
153
#28

Aisamiery, ок, в чем-то вы правы, OPTIMIZE TABLE нет для MEMORY таблиц из коробки (включается опцией skip-new). В остальном, вы не правы, эта команда работает для MyISAM, InnoDB, NDB, Aria, RocksDB движков. Более того, для большинства из них, это алиас для команды ALTER TABLE ... FORCE; А уж эта команда, в свою очередь, является алиасом для обычного DROP + CREATE, с наливкой данных.

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий