Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Как можно уменьшить объем существующей Базы?

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Erlang
phpBB 2.0.15
Сообщения: 1033
Стаж: 19 лет 9 месяцев
Откуда: Москва
Благодарил (а): 209 раз
Поблагодарили: 4 раза

Сообщение Erlang »

Mr. Anderson
а помогло :)
С уважением,
Сергей
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 20 лет 1 месяц
Откуда: СССР
Благодарил (а): 5 раз
Поблагодарили: 105 раз

Сообщение Mr. Anderson »

Erlang
Зато поиск пострадает :(
Аватара пользователя
O
phpBB 1.4.2
Сообщения: 55
Стаж: 19 лет 2 месяца
Откуда: Восточное Дегунино, Москва, Россия
Благодарил (а): 2 раза

Сообщение O »

Практика показывает, что если удалить поисковые таблицы, то выигрыш в размере базы может быть в 2.5 раза. Действительно, поиск по словам тогда станет невозможен.
Житель района Восточное Дегунино (Москва, Россия)
Дайвер
phpBB 1.0.0
Сообщения: 3
Стаж: 19 лет

Как уменьшить размер базы?

Сообщение Дайвер »

База уже 12Mb.
Произвел чистку форума, удалил много тем и сообщений, а размер практически не уменьшился.
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

eXtraLight Backup
http://www.phpbbguru.net/community/viewtopic.php?t=86

пригодится также "Тюним поиск"
http://www.phpbbguru.net/community/viewtopic.php?t=2134
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет 1 месяц

Сообщение quazi »

несколько версий

много пользователей.
очень большая личка, которую пользователи не вычищают
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

Да, на тему лички пригодится Admin Private Message Manager. Можно будет поместить всю личку прочитанную в архив или вообще удалить.
Stas!

Сообщение Stas! »

А не проще через phpmyAdmin очистить всю личку и никаких проблем
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

Stas! писал(а):А не проще через phpmyAdmin очистить всю личку и никаких про
Ну не все смогут сделать это вручную... Уровень подготовки юзеров сильно различается. К тому же мод позволяет не только удалять все лички.
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 20 лет

Сообщение Jovani »

База уже 12Mb.
Это еще цветочки ...

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

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

Итак, первое - удаляем эти "запрещенные" для индексирования слова.
Делается все с помощью нижеследующего SQL-запроса, например через phpMyAdmin.
Если префикс таблиц другой, измените!

Код: Выделить всё

DELETE FROM phpbb_search_wordmatch,phpbb_search_wordlist 
USING phpbb_search_wordmatch,phpbb_search_wordlist 
WHERE phpbb_search_wordmatch.word_id = phpbb_search_wordlist.word_id 
AND ( length(phpbb_search_wordlist.word_text) < 3 
OR length(phpbb_search_wordlist.word_text) > 20);
Это просто удалит слова, менее 3-ех символов и более 20-ти символов, которые ошибочно влетели в таблицы.
Результат увидите сами ...
Продолжу позже ...
romutis
phpBB 1.4.4
Сообщения: 103
Стаж: 19 лет 10 месяцев

Сообщение romutis »

Jovani, у меня нету коротких (менее 4 символов) или длинных (более 20 символов) слов в поисковых таблицах. Более того - большие стоп-листы + то, что находится внутри квоты, не попадает в поисковые таблицы. А таблицы всё равно большие. Что мне делать?
// romutis
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

У меня сейчас размер БД форума (который в локалке) 102.9 MB, из них phpbb_search_wordlist 9.0 MB и phpbb_search_wordmatch 49.6 MB, а phpbb_posts_text 25.1 MB, всё остальное до 1Мб :roll:
Чистка ЛС мало что даёт.. тормозов не наблюдаю (разве что от обилия посетителей).
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 20 лет

Сообщение Jovani »

romutis, для тебе для уменьшения своей поисковой таблицы, можно немного "кастрировать" поиск - удалить чатоиспользуемые неинформативные слова.

Найти их можно, например таким запросом:

Код: Выделить всё

SELECT ls.word_id, ls.word_text, COUNT(wm.word_id) as entries FROM `phpbb_search_wordlist` as ls LEFT JOIN `phpbb_search_wordmatch` as wm ON ls.word_id=wm.word_id GROUP BY wm.word_id ORDER BY entries DESC LIMIT 0,50 
Удалить их можно скриптом, предварительно внеся в search_stopwords.txt
Скрипт:

Код: Выделить всё

<?php 
//***** reduce_my_searchtables_with_stopwords.php ****// 

define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 
include($phpbb_root_path . 'includes/functions_search.'.$phpEx); 

// Start session management 
$userdata = session_pagestart($user_ip, PAGE_SEARCH); 
init_userprefs($userdata); 
// End session management 

$stopwords_array = file($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . "/search_stopwords.txt"); 

$liste=''; 
foreach($stopwords_array as $curr_word) 
{ 
$liste .= ( ( $liste != '' ) ? ', ' : '' ) ."'".trim($curr_word)."'"; 
} 

$sql = "SELECT word_id 
FROM " . SEARCH_WORD_TABLE . " 
WHERE word_text IN ($liste)"; 
if ( !($result = $db->sql_query($sql)) ) 
{ 
message_die(GENERAL_ERROR, 'Could not obtain common word list', '', __LINE__, __FILE__, $sql); 
} 

$common_word_id = ''; 
while ( $row = $db->sql_fetchrow($result) ) 
{ 
$common_word_id .= ( ( $common_word_id != '' ) ? ', ' : '' ) . $row['word_id']; 
} 

if ($common_word_id=='') message_die(GENERAL_ERROR,'None of the words in the list are in your search_tables.<br>Note: This could also mean the list is empty ;)'); 
//echo '>'.trim($curr_word)."<<br>"; 
//echo $liste .'<br>'. $common_word_id; 
//exit; 

$sql = "DELETE FROM " . SEARCH_WORD_TABLE . " 
WHERE word_id IN ($common_word_id)"; 
if ( !$db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, 'Could not delete word match entry', '', __LINE__, __FILE__, $sql); 
} 
$sql = "OPTIMIZE TABLE " . SEARCH_WORD_TABLE; 
if ( !$db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, 'Could not optimize', '', __LINE__, __FILE__, $sql); 
} 

$sql = "DELETE FROM " . SEARCH_MATCH_TABLE . " 
WHERE word_id IN ($common_word_id)"; 
if ( !$db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, 'Could not delete word match entry', '', __LINE__, __FILE__, $sql); 
} 
$sql = "OPTIMIZE TABLE " . SEARCH_MATCH_TABLE; 
if ( !$db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, 'Could not p&uuml;timize', '', __LINE__, __FILE__, $sql); 
} 

message_die(GENERAL_MESSAGE,'<b>Done!</b><br><br>The following list-entries have been removed from your searchtables:'.$liste); 
//echo $liste .'<br>'. $common_word_id; 

?>
Кроме того, можно удалить "несуществующие" слова - те в которых используется повторяющиеся символы, например пишут "ooops", "yeees"
То есть, насториить на повторяющиеся ...

Добавлено спустя 4 минуты 21 секунду:

У кого проблемы с локалью, могут влетать слова в разных регистрах, например "слово" и "СЛОВО" - из-за этого будет увеличена таблица search_wordlist
romutis
phpBB 1.4.4
Сообщения: 103
Стаж: 19 лет 10 месяцев

Сообщение romutis »

Jovani
Ну нашел этот запрос, что некоторые слова имеют ссылки с 90 000 сообщений (остальные из первых пятидесяти слов имеют не менее 60 000 ссылок на сообщения). И что? Слов из стоп-листов там нету, более того подавляющее большинство напрямую относится к тематике форума - никакого смысла нет выкидывать ключевые слова.

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

Пусть уж лучше будет таблица поисковых слов размером в 700МБ - это не так страшно.
// romutis
Jovani
phpBB 2.0.5
Сообщения: 477
Стаж: 20 лет

Сообщение Jovani »

Пусть уж лучше будет таблица поисковых слов размером в 700МБ - это не так страшно
Угу. Если только ты не боишься, что тебя через эту таблицу заDDOS-ят ...
Я с этим столкнулся. Сам сейчас не знаю что делать ....

Ну и не забыл про "припарки" в виде отключения от индексации некоторых форумов, например такое(пишу по памяти):

Открыть includes/functions_post.php, найти:

Код: Выделить всё

add_search_words ...
Обрамить (сорри не по правилам)

Код: Выделить всё

if (($forum_id != 1) and ($forum_id != 20))
{
add_search_words ...
}
1 и 20 - форумы которые не должны индексироваться ...

Вернуться в «Поддержка phpBB 2.0.x»