.
Место для Вашей рекламы
5 Март 2011

Перенос базы форума с Postgres на MySQL

postgresql-to-mysql
Один из текущих проектиков на старом хостинге стал совсем плох — сервак еле еле тянет казалось бы простейшие запросы. Какое там железо узнать так и не удалось … хостинг добывался клиентом по какому великому «знакомству» 🙂

В общем «разруливать» ситуацию доверили мне.
Думать тут особо не пришлось — первым же делом наметил переезд сайта на свой выделенный сервачек.
Как ни странно для нашего времени весь кроме форума сайт был свёрстан в чистом html (сам не верил пока лично не увидел !!! около 20к html файлов) — тут без проблем.

А вот форум оказался на Postgres SQL !

Решений пришло в голову сразу 2  первый очень простой — поднять Postgres и вуаля.
Но одновременно в памяти крутить 2 SQL сервера, причём Postgres только из за одного форума мне показалось не правильным, поэтому решил делать по второму варианту — это перенос данных с Postgres на MySQL. К тому же для форума фичи Postgres, которых нет в MySQL (хранимы процедуры и пр.) абсолютно не нужны. Читать полностью »

рубрики: Полезности | 3 комментария

24 Декабрь 2008

Заливаем кейворды в MySQL

хх … вспомним старое 🙂 вроде времени немного появилось для онлайн работы, рутраф не прет (по крайней мере у меня) поэтому буду возвращаться к анлоязычному сектору (оно и пожирнее будет).

Основа основ — кейворды. Овертюра сдулась, а остальные кейвордовые инструменты платные, поэтому для доргенов кейворды я буду вытягивать из купленной в далекий 2006г 44 миллионной базы Пастухова. Кстати сейчас уже 77 миллионов, правда параметров стало поменьше.

База у меня в виде текстовых файликов — по первой букве кейворда, напр. keywordsg.txt — кеи начинающиеся с буквы «g».

Распишу как быстро загрузить на локальную машинку (у меня стоит Денвер), по аналогии и на сервак (принцип тот же).

Перед всеми действиями желательно настроить ваш MySql на использование больших объемов памяти, чем стоит по умолчанию (по умолчанию как правило на минимум стоит) — для этого my.cnf следует заменить на my-huge.cnf  (в денвере их по умолчанию в базовом пакете нет — скачайте дополнение к mysql — появятся).

Для запуска сварганил батник import.bat следующего содержания:

cls

z:\usr\local\mysql5\bin\mysql.exe -u root SE < enkeys.sql

Сам enkeys.sql будет такой:

CREATE TABLE `enkeys` (

— непосредственно кейворд
`key` VARCHAR( 80 ) NOT NULL ,

— количество запросов в овертюре, т.е. сколько людей ищут такой кей в месяц (спрос)
`overture` INT NOT NULL ,

— количество запросов по вордтракеру (спрос)
`wtrack` INT NOT NULL ,

— количество страниц в индексе гугла по такому кею (конкурентность)
`gidx` INT NOT NULL ,

— количество страниц в индексе гугла по кею в кавычках — строгий запрос (конкурентность)
`gstrong` INT NOT NULL,

— количество страниц в индексе гугла по кею в тайтле страницы (конкурентность)
`gtitle` INT NOT NULL
) TYPE = MYISAM ;
—непострдственно ВОЛШЕБНАЯ комманда

LOAD DATA INFILE «Z:\\home\\192.168.0.44\\www\\keys\\keywords’.txt» INTO TABLE `enkeys` (`key`, `overture`, `wtrack`, @dummy, `gidx`, `gstrong`, `gtitle`);

— таких строчек всего 44 штуки организовалось, делается очень быстро вручную с помощью комманды dir >file.txt и FAR-а (блочное копирование — вставка)

LOAD DATA INFILE «Z:\\home\\192.168.0.44\\www\\keys\\keywordsz.txt» INTO TABLE `enkeys` (`key`, `overture`, `wtrack`, @dummy, `gidx`, `gstrong`, `gtitle`);

Обратите внимание —

  1. Грузим не инсертами, а LOAD DATA INFILE ! Так во много раз быстрее !
  2. Исходный файл был на 16 полей — я же оставил только 6 ! ненужные для загрузки поля пропускаем следующим синтаксисом — @dummy. (база и так огромная — линшее нам не надо)

В итоге у меня загрузка заняла минут 10 — и это 44 миллиона кеев ! инфы на 3 гига в текстовых файлах!

Далее «чистим» базу — уже на свое усмотрение, сильно пожмете — хорошие кеи можете убить, слабо — база будет медленная, причем неоправданно — уж очень много всяких явно гавенных кеев.

Лично я делал так (то что помню)

— Добавил индекс по gidx

ALTER TABLE `enkeys` ADD INDEX ( `gidx` );

— Убил страницы с содержанием

DELETE FROM `enkeys` WHERE `gidx` < 1000;

Добавил индексы по вордтракеру и овертюре и удалил если и то и другое меньше 10 (уже точно не понмю).

Ну и в конце, после удалений оптимизировал таблицу OPTIMIZE TABLE `enkeys`;

и добавил индекс на сам ключевик

ALTER TABLE `enkeys` ADD INDEX ( `key` );

ОЧЕНЬ ВАЖНЫЙ ИНДЕКС ! (для выборок по содержанию слова)

В итоге у меня база получилось на приблизительно 2 миллиона кеев.

Запрос в phpmyadmin-е на входжение «entermin» (таблеточка фентермин, если кто не знает) на моем сервачке (средненький такой сервант по железу) дал такой результат (197 всего, запрос занял 0.7931 сек.) — думаю неплохо и поставленной цели я добился.

Локально (на денвере) пока продолжаю играться с базой. Как закончу — результаты напишу в комментариях.

P.S.

Желающим приобрести базы у господина Пастухова — очень реккомендую сначала стукнуть мне ! Скидка в 20% обеспечена + хороший (имхо) совет 🙂

<Хвостовой>

Различная детская стенка подростковая, заказ кухни недорого

</Хвостовой>

рубрики: SEO, Полезности, Программирование, Размышления | 11 комментариев

Яндекс.Метрика