Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тысячи таблиц. Эффективно ли? wordpress mu 
:(
    Опции темы
Wowa
Дата 13.9.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Wordpress MU ( http://mu.wordpress.org/ ) - это движок, который ставится на сайт и позволяет всем посетителям сайта создать свой блог.

Вот из официального описания:
Цитата

Ever dream of running hundreds of thousands of blogs with a single install of WordPress?

WordPress MU, or multi-user, is designed to do exactly that. It is most famously used for WordPress.com where it serves tens of millions of hits on hundreds of thousands of blogs each day.

Who is WordPress MU ideal for?

    * Newspapers and magazines, like Le Monde.
    * Universities, like Harvard.
    * Blog networks
    * Niche-specific blog hosts, like Edublogs



Было замечено, что для каждого создаваемого блога создается по 8 таблиц. Это означает, что при 10 блогах в базе будут 80 таблиц. При 100 блогах - будет 800 таблиц. Такое количество таблиц меня немного пугает, т.к. боюсь сильного снижения производительности.

Вот имена создаваемых таблиц:
 wp_х_categories
 wp_х_comments
 wp_х_link2cat
 wp_х_links
 wp_х_options
 wp_х_post2cat
 wp_х_postmeta
 wp_х_posts

где X - это порядковый номер блога.

На мой взгляд было бы намного эффективнее всё записи с разных блогах хранить в одной таблице. Насколько верны мои опасения при тысячах блогах? 
1 000 блогов - 8 000 таблиц
100 000 - 800 000 таблиц (<-кажется страшной цифрой.)
PM WWW   Вверх
Бонифаций
Дата 13.9.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



вообще это зависит от файловой системы. MyISAM на всякую таблицу делает 3 файла - .frm .myd  и .myi . То есть на 8000 таблиц будет 24 тыщщи файлов. Мы делали свои тесты года 3 назад на линуксе ext3 и у нас начинались проблемы примерно с 10000 таблиц. 




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
sTa1kEr
Дата 13.9.2007, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Wowa, в теории для MyISAM таблиц как раз эффективней будет работать со многочисленными таблицами, чем с одной огромной, т.к. в MyISAM не поддерживаются транзакции и при записи лочится вся таблица. Но есть нюанс, который следует учитывать Drawbacks to Creating Many Tables in the Same Database
Цитата

If you have many MyISAM tables in the same database directory, open, close, and create operations are slow. If you execute SELECT statements on many different tables, there is a little overhead when the table cache is full, because for every table that has to be opened, another must be closed. You can reduce this overhead by increasing the number of entries allowed in the table cache.

Имхо, при грамотно настроенном сервере ничего страшного не будет. Даже если будет зарегистрировано 10000 блогов, я очень сомневаюсь, что пользователи одновременно будут обращаться ко всем 10000 блогам (в лучшем случае ко 100).
PM MAIL   Вверх
muzer
Дата 14.9.2007, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Сейчас более менее нормально живёт сервер со 100 тысячью таблицами. table cache выставлен в 130 тысяч. На такой базе нельзя говорить show table status;, немного тормозит show tables like 'something%'. Flush tables аналогично выполняется несколько минут.
Overhead'а на open/close не замечаем, так что table_cache работает.

Для блогов, думаю, это идеальный вариант.
Всё-таки на таблицах(е) в десятки миллионов строк (для случая, когда все блоги в одной таблице) будет невозможно выполнять частые, а тем более одновременные insert'ы/select'ы.

Ещё можете подумать над тем, чтобы разносить таблицы по разным директориям, может быть даже по разным базам на одном и том же сервере.
Ну и конечно железка должна быть соответствующая, если вы собираетесь обслуживать 10000 блогов. Да и когда ваш проект перевалит за 1000ый не ботом-сгенерённый блог, вы уже заработаете на второй сервер smile

Добавлено через 47 секунд
Цитата(Бонифаций @  13.9.2007,  18:31 Найти цитируемый пост)
года 3 назад на линуксе ext3 и у нас начинались проблемы примерно с 10000 таблиц. 

какие?

PM WWW   Вверх
Бонифаций
Дата 17.9.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



Цитата(muzer @  14.9.2007,  05:02 Найти цитируемый пост)
Цитата(Бонифаций @  13.9.2007,  18:31 Найти цитируемый пост)
года 3 назад на линуксе ext3 и у нас начинались проблемы примерно с 10000 таблиц. 

какие?


появлялись периодические тормоза. 

Цитата(muzer @  14.9.2007,  05:02 Найти цитируемый пост)
100 тысячью таблицами. table cache выставлен в 130 тысяч.


если не секрет а что в ulimit -n и fs.file-max?

Добавлено через 2 минуты и 37 секунд
Цитата(muzer @  14.9.2007,  05:02 Найти цитируемый пост)
Всё-таки на таблицах(е) в десятки миллионов строк (для случая, когда все блоги в одной таблице) будет невозможно выполнять частые, а тем более одновременные insert'ы/select'ы.


ну неправда. вполне себе insert-ятся даже на myisam. А есть еще innodb


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
muzer
Дата 17.9.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Цитата(Бонифаций @  17.9.2007,  17:23 Найти цитируемый пост)
если не секрет а что в ulimit -n и fs.file-max?

ulimit - соответствующий, кол-во таблиц * 3
fs.file-max - эмм, на порядок больше, можно считать анлим


Цитата(Бонифаций @  17.9.2007,  17:23 Найти цитируемый пост)
ну неправда. вполне себе insert-ятся даже на myisam. А есть еще innodb 

Что у вас инсертится? Можете пример привести? Дефинишн, кол-во строк, кол-во запросов в секунду.
Последовательно - да, параллельно (тут говорили про 10000 блогов, то есть в пик это пусть 1% - 100 запросов) - нет.
Плюс если таблицы будут не fixed, то точно умрёт, тут даже думать не о чем. 
PM WWW   Вверх
Бонифаций
Дата 18.9.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



Цитата(muzer @  17.9.2007,  19:54 Найти цитируемый пост)
Что у вас инсертится? Можете пример привести? Дефинишн, кол-во строк, кол-во запросов в секунду.


Пример - сбор инфо с датчиков. Таблица _не_ fixed. Сейчас примерно 50 миллионов строк. 5 датчиков, каждый примерно 5 insert в сек. Машина amd 64 4000+, 2 гига памяти.



--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
muzer
Дата 24.9.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Цитата(Бонифаций @  18.9.2007,  15:09 Найти цитируемый пост)
Пример - сбор инфо с датчиков. Таблица _не_ fixed. Сейчас примерно 50 миллионов строк. 5 датчиков, каждый примерно 5 insert в сек. Машина amd 64 4000+, 2 гига памяти.

Хм..хорошие показатели. 
А delay_key_write в mysql - включён/выключен для этой таблицы?
insert'ы в конец таблицы всегда делаются? если да, то это немного объясняет живучесть smile  (грубо говоря, только insert, или бывают delete/replace/insert_on_duplciate_key_update, портящие целостность?)
Много ли обращений на чтение из этой таблицы?
Ради интереса просто, если не сложно.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.