SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 27.04.2011 19:39:45

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Посоветуйте с решением

Всем привет, есть таблица InnoDb в нее по задумки будут попадать в транзакции записи в течении дня (UPDATE не будет), записи типо time,msg,user,ratio. Выборка из этой таблице будет производиться по критерию найти последнее сообщение юзера, показать время сообщения,показать макс/ мин рейтинг участника,кол-во сообщений и.т.д вообщем типо лога. Так вот для не зарегистрированных пользователей я хочу сделать ограничение в во времени этих данных, чтобы они своими SELECT`ами не создавали тормозов для транзакций зарегиных участников. Добавил в event процедуру которая каждые 10-15 минут будет делать копию этой таблицы, скажем INSERT-SELECT`ом в таблицу в формате MyISAM. И ее отдавать уже гостям сайта, пусть они ее group by`ят и filesort`ят и в хвост и в гриву smile Скажите такая махинация будет оправдана? Или весь выигрыш в производительности будет съедать заполнение данными временной таблице?

Отредактированно simple (27.04.2011 20:05:16)

Неактивен

 

#2 28.04.2011 09:33:32

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Посоветуйте с решением

Скажите а можно каким нибудь образом в переменную загнать значения столбца при выполнение операции UPDATE, как это делается при выборки таблицы типо SELECT @a:=account FROM table?

Отредактированно simple (28.04.2011 09:34:00)

Неактивен

 

#3 28.04.2011 14:28:55

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Посоветуйте с решением

Вот еще вопрос назрел, делаю SELECT MAX(price) FROM catalog WHERE name_id=1
EXPLAIN выдает все столбцы NULL  и в графе Extra пишет 'Select tables optimized away'. Что бы это могло быть? И быстро ли будет выполняться такой запрос, просто я хочу делать SELECT UNION этого запроса и не могу понять что значит все эти NULL хотя значение MAX выбирается правильно.

Отредактированно simple (28.04.2011 14:29:47)

Неактивен

 

#4 28.04.2011 20:55:38

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Посоветуйте с решением

Ого у Вас вопросы smile

1. Зависит от количества запросов, но, кажется, если Вы упретесь в одну табличку,
Вы будете нагружать диски общие с другой табличкой, следовательно, выигрыша не
будет. Лучше оптимизировать запросы.

2. Можете сделать это в триггере, например. Не могу, правда, придумать, зачем такое
может понадобиться. Учтите, что UPDATE может зацепить несколько строк одним за-
просом.

3. Это значит, что name_id = 1 нет в таблице. Если есть индекс на (name_id, price) —
быстро.

Неактивен

 

#5 28.04.2011 21:40:12

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Посоветуйте с решением

Спасибо за ответы. А если данные скидывать не в таблицу MyISAM, а в файл? слышал mysql умеет это шустро делать?

Отредактированно simple (28.04.2011 23:02:21)

Неактивен

 

#6 29.04.2011 00:00:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Посоветуйте с решением

Файл Вы положите на тот же диск? Читать его потом как будете? smile

Неактивен

 

Board footer

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