Отдельный сервер для БД MySQL — как сэкономить трафик и ускорить приложение

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

На картинке изображен наглядный пример графика нагрузки сети. До 18:00 сжатие было отключено, в 18:00 — включено.


Читать дальше →

Полезные запросы, чтобы очистить БД в wp

Очищает всякие левые символы. Когда кодирует БД туда сюда.
UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, '”', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');

UPDATE wp_comments SET comment_content = REPLACE(comment_content, '“', '“');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '”', '”');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '’', '’');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '‘', '‘');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '—', '–');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '–', '—');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '•', '-');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '…', '…');


Запрос, чтобы закрыть все «обратные ссылки» на свои посты. Ну функция пингбеки знаете такая есть. Не будешь же каждую запись вручную ;)
UPDATE wp_posts SET ping_status = 'closed';


Очищает все неиспользуемые шорткоды.
UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;


Удаляет некорректные метки
DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';


Удаляет все неиспользуемые и давно забытые метки, которые не принадлежат постам, но остались в базе.
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);
DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);


Очистка кеша фидов.
DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient%_feed_%')


Удаляет все копии сообщений и историю изменений.!!! Вот это очень хорошо очищает. Ибо после каждого редактирования сохраняется копия правок.
DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id);


Пакетное удаление старых сообщений
В данном примере устанавливается для удаления любой пост, который старше 600 дней.
DELETE FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > 600


Изменить автора у всех сообщений сразу.
SELECT ID, display_name FROM wp_users;

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

Как убить тяжелый MySQL запрос?

1. Зайти на сервер по SSH.
2. Выполнить
$ mysql -u USER -p
USER — это ваш пользователь MySQL
3. Ввести пароль для USER.
4. Выполнить
show processlist;
(не забудьте про точку с запятой в конце)
5. Узнать идентификатор тяжелого запроса.
6. Выполнить
kill query 12345;
где 12345 заменить на идентификатор запроса.

Массовая замена текста в PHPMyAdmin

Заходим в phpmyadmin
Идем в вашу базу данных
Выполняем запрос в SQL
UPDATE table SET field = REPLACE(field, 'старое слово', 'на новое слово');

table — это название вашей таблицы
field — поле в этой таблице
Например в vBulletin запрос на смену всех ссылок (c exphack.ru на exphack.org) в постах в SQL выглядит так:
UPDATE post SET pagetext = REPLACE(pagetext, 'exphack.ru', 'exphack.org');

utf8 - кодировка по умолчанию в mysql

При добавлении следующих строк, кодировка по дефолту становится UTF-8
/etc/mysql/my.cnf
[client]
default-character-set = utf8
[mysql]
default-character-set  =utf8
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

как сбросить пароль root mysql

требуется: сменить пароль root

установлен mysql server 5.1 essential
останавливаем сервис: net stop mysql
запускаем mysqld.exe –skip-grant-tables

открываем еще одну консоль, запускаем mysql под рутом без пароля:
mysql -uroot

выбираем базу mysql:
use mysql

меняем пароль рута:
UPDATE user SET Password=PASSWORD(’123123′) WHERE User=’root’;

готово.