Супершвидкий MySQL

5 Квітня 2010

Памятаєте нещодавно я розганяв швидкість роботи з базою данних через заміну MySQL на Redis. Та заміна суперово працює й по сій день, але була ще одна маленька проблемка з рештою таблиць на MySQL. Оскільки я в тім проекті перейшов на кластерну архітектуру, то виникла проблема, що запити з інших компів MySQL довго опрацьовує. Час опрацювання в середньому 5с., що надзвичайно довго в сучасних системах. Трішки порившись в інтернеті знайшов пораду - добавити 2 рядки в конфіг мускула в розділ mysqld:

[mysqld]
skip-locking
skip-name-resolve

З назви цих строчок розумію, що MySQL довго виконує запит, тому що резолвить якогось домена чи ще щось, хоча я й звертаюся до неї по ip-шнику. Але пофіг що воно робить, головне те що ці рядки реально працюють. Середня швидкість запитів в мене вийшла після оптимізації близько 0.1 с. - оце вже непоганий показник.

Напевно в мене поки що не досить досвіду в плані оптимізації, що виходить оптимізовувати в сотні разів )

Супершвидкий Redis

1 Квітня 2010

Хоча сьогодні 1 квітня, але цей пост не жартівливий. Чесне слово.

Півроку назад я спробував юзати базу даних Redis і написав на ній простенький блог - http://tutamc.com/node/201. По тих тестах я бачив що Redis швидка база, але так на практиці ніразу й не доводилося її заюзати.

Та тут мене як фрілансера знайшов один замовник і за "їжу" я написав скриптик, що використовував MySQL. Цей скрипт повинен був брати дані з різних сайтів і заносити їх в базу. Скрипт вийшов на декілька десятків рядків і в тестах нормально себе зарекомендував. Але на продакшин сервері я побачив таку сумну статистику:

MYSQL: count SQL query - 125984, time - 14606.3

Хоча запити були й прості, але через те що їх було більше 100 тисяч скрипт працював як бачимо 4 години. Спочатку думав над оптимізацією всієї роботи, та щось мені ліньки стало думати. І я просто заюзав Redis - змінивши в скрипті декілька рядків отримав таку стату:

REDIS: query - 125984, time - 109.3

Redis працював більше ніж в 100 раз швидше! При цьому не грузив проц навіть на 1 відсоток, і займав в оперативі лишень 30 Мб. Я просто в шоці! Гадав прискорення буде хай в 5 чи 10 раз, але не в 100. До того ж Redis запущений під Віндою і він там ще не оптимально працює, гадаю під Лінохом швидкість була б ще швидша.

Тож якщо в вас якийсь високонавантажений проект, то придивіться до Redis'а - http://code.google.com/p/redis/ 

PS: зборки Redis під Windows знаходяться тут - http://code.google.com/p/servicestack/wiki/RedisWindowsDownload

 
 
 
Роман Хоменко aka PresidentUA
mail/jabber: spirt40@gmail.com