SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.08.2011 12:19:41

kilex
Участник
Откуда: Ижевск
Зарегистрирован: 29.07.2011
Сообщений: 17

Производительность кластера (SELECT)

В общем настроил простейший кластер - 2 сервера с datanode, mysqld и 1 c mngd

Столкнулся с резким увеличением времени выполнения простейших команд (в частности SELECT)

в таблице на 77К записей:

если engine стоит InnoDB или MyISAM то запрос SELECT * from table; выполняется 1000-1200мс
в случае с ndbcluster это время увеличивается до 3000-4000

Настройки все дефолтные, в какую сторону смотреть?


Инженер ИСЭС
ООО "Марк"

Неактивен

 

#2 04.08.2011 15:52:41

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Производительность кластера (SELECT)

Это может быть нормальным, так как в кластере дополнительные расходы на передачу данных по сети. Какой именно запрос? Что говорит EXPLAIN.

Неактивен

 

#3 04.08.2011 16:48:35

kilex
Участник
Откуда: Ижевск
Зарегистрирован: 29.07.2011
Сообщений: 17

Re: Производительность кластера (SELECT)

Обычный select * from table;
explain:
id    select_type    table    type    possible_keys    key    key_len    ref    rows    Extra
1    SIMPLE    table    ALL    \N    \N    \N    \N    143890   

mysqld вращается на одной машине с ndbd сервером имеющим полные данные по этой таблице, обращение по сети в данном случае бессмысленно. Даже если я гашу все ноды и осталвляю рабочей только эту - скорость не меняется...

По идее кластер должен дать прирост в скорости - на практике имеем обратное. делал 4 ноды, таже скорость. Возможно нужны какието особоые опции, дабы начать использовать ресурсы сервера? Ибо в данный момент все серваки простаивают. ndbd кюшает ~700м памяти и 1-20% CPU

Linux mysql-two 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux
Server version: 5.1.56-ndb-7.1.15-log Source distribution


Инженер ИСЭС
ООО "Марк"

Неактивен

 

#4 04.08.2011 17:23:53

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Производительность кластера (SELECT)

Не думаю, что будет выйгрыш для запроса SELECT * без выборки по индексу. Вся выборка в любом случае должна попасть в mysqld, если при этом не участвует сеть, то все равно зайдествован дополнительный протокол передачи.

Неактивен

 

#5 04.08.2011 17:41:09

kilex
Участник
Откуда: Ижевск
Зарегистрирован: 29.07.2011
Сообщений: 17

Re: Производительность кластера (SELECT)

ну дак и что предлагаете делать? это безвыходная ситуация?


Инженер ИСЭС
ООО "Марк"

Неактивен

 

#6 04.08.2011 18:48:51

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Производительность кластера (SELECT)

Такой факт жизни - не все запросы на кластере быстрее. Может быть и есть какое-то решение, но я его не знаю.

Неактивен

 

#7 05.08.2011 08:56:39

kilex
Участник
Откуда: Ижевск
Зарегистрирован: 29.07.2011
Сообщений: 17

Re: Производительность кластера (SELECT)

rgbeast написал:

Такой факт жизни - не все запросы на кластере быстрее. Может быть и есть какое-то решение, но я его не знаю.

а есть пример в какой ситуации будет работать быстрее? у меня ощущение что нет таких запросов...


Инженер ИСЭС
ООО "Марк"

Неактивен

 

#8 05.08.2011 09:10:44

kilex
Участник
Откуда: Ижевск
Зарегистрирован: 29.07.2011
Сообщений: 17

Re: Производительность кластера (SELECT)

Может целесообразно сделать одну-две реплики с кластера - там то селект будет выполнятся быстрее, а на сам кластер оставить только инсерты/апдейты?


Инженер ИСЭС
ООО "Марк"

Неактивен

 

#9 05.08.2011 10:11:43

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Производительность кластера (SELECT)

kilex написал:

а есть пример в какой ситуации будет работать быстрее? у меня ощущение что нет таких запросов...

Примеры:
1. много параллельных запросов SELECT/UPDATE по первичному ключу WHERE key=X
2. запрос, с условием WHERE требующий full table scan, но при этом условие удовлетворяет требованиям на engine condition pushdown. В этом случае каждая нода будет выполнять скан своей части таблицы.

kilex написал:

Может целесообразно сделать одну-две реплики с кластера - там то селект будет выполнятся быстрее, а на сам кластер оставить только инсерты/апдейты?

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

Неактивен

 

#10 05.08.2011 11:39:19

kilex
Участник
Откуда: Ижевск
Зарегистрирован: 29.07.2011
Сообщений: 17

Re: Производительность кластера (SELECT)

ну как показала практика медленней кластера нет ничего ) а в репликах будет использоваться MyISAM - select'ы будут летать


Инженер ИСЭС
ООО "Марк"

Неактивен

 

#11 05.08.2011 11:53:11

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Производительность кластера (SELECT)

kilex написал:

ну как показала практика медленней кластера нет ничего ) а в репликах будет использоваться MyISAM - select'ы будут летать

Зачем тогда нужен кластер в этой конфигурации? На самом деле, по апдейтам кластер быстрее (зависит от числа нод).

Неактивен

 

#12 08.08.2011 10:00:03

kilex
Участник
Откуда: Ижевск
Зарегистрирован: 29.07.2011
Сообщений: 17

Re: Производительность кластера (SELECT)

мне необходима отказоустойчивость (в первую очередь) при сохранении текущей скорости (если и потерять то не сильно, не в 3 раза)


Инженер ИСЭС
ООО "Марк"

Неактивен

 

#13 08.08.2011 16:34:45

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Производительность кластера (SELECT)

kilex написал:

мне необходима отказоустойчивость (в первую очередь) при сохранении текущей скорости (если и потерять то не сильно, не в 3 раза)

В этом случае ваша схема с репликацией подойдет, учитывая при этом, что select-ы на реплике не должны быть частью транзакции. Априори не для всех запросов можно не потерять, поэтому задача сохранения скорости решается не всегда (особенно для JOIN). Учитывайте также, что даже если запросы выполняются медленнее, кластер может выполнять их больше одновременно.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson