Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.01.2012, 19:45
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 1  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
По умолчанию нужен совет по оптимизации базы данных

В одном из моих приложений для соцсети, заметил, что при увеличении размера таблицы в БД mysql с данными пользователей от 500 тыс до 4.5 миллионов записей время выборки для одинаковых запросов увеличивается с 0,1 до 4 секунд.
Вопрос - время выборки из БД зависит от количества записей в таблице или же от количества записей всей БД?
Если разбить таблицу на 10 таблиц, то это поможет уменьшить время запроса или же надо по нескольким базам информацию раскидывать?
Хочу так сделать в первой все uid начинаются с 0, во второй с 1, и т.д. до 9.

Старый 18.01.2012, 19:57
_SoWa вне форума Посмотреть профиль Отправить личное сообщение для _SoWa Найти все сообщения от _SoWa
  № 2  
Ответить с цитированием
_SoWa
 
Аватар для _SoWa

Регистрация: Oct 2009
Сообщений: 72
А индекс в таблице есть? Для индексированной таблицы при нормальном запросе 4,5кк записей - пшик, мгновенно почти. Плюс надо учитывать - что тебе важнее в этой таблице - писать или читать? Время выборки зависит от количества записей в таблице. Если писать - я бы сделал много таблиц неиндексированных, если читать - одну индексированную.

Старый 18.01.2012, 20:02
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Оптимизация базы данных складывается из целого ряда рецептов, начиная с типа/структуры таблицы и заканчивая оптимизацией самого запроса. Не имея информации, как у тебя там все устроено, можно лишь порекомендовать доки вдоль и поперек по ключевым моментам:
http://mysql.ru/docs/man/Table_types.html
http://mysql.ru/docs/man/Column_types.html
http://mysql.ru/docs/man/MySQL_Optimisation.html
и т.д.
__________________
Поймай яблоко 2!

Старый 19.01.2012, 09:50
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 4  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Индекса в таблице 2 - по uid пользователя и в авто инкремент. Всего полей в строчке 12. Надо и писать и читать причем записи должны быть уникальными по uid, запрос такой например
PHP код:
mysql_query("SELECT * FROM `users` WHERE `id`>".$user_start_id." AND `sex`=1 LIMIT 0, ".$users_in_file
или такой
PHP код:
for($i=0;$i<$total;$i++) $reciver_array[]='`uid`='.$json_data['uid'][$i];
$reciver_exp=implode(' OR ',$reciver_array);
mysql_query("UPDATE `users` SET `mse`=`mse`+1 WHERE ".$reciver_exp); 

Старый 19.01.2012, 11:34
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 5  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Сорри за оффтоп, но
Код:
$reciver_array[]='`uid`='.$json_data['uid'][$i];
. Первый шаг к тому, что ваш сервер положат sql-инъекцией
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 19.01.2012, 17:40
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 6  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
А зачем второй индекс с автоинкрементом?

Старый 20.01.2012, 12:05
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 7  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Цитата:
Сообщение от Aloran Посмотреть сообщение
А зачем второй индекс с автоинкрементом?
Он мне чтобы делать случайную выборку из базы. Вначале узнаю сколько всего записей в таблице, а потом беру случайные числа в этих пределам и достаю соответствующих пользователей из базы по автоинкременту.

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:44.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.