Javascript.RU

Результаты опроса: Какие еще технологии нужно знать
CMS 12 26.67%
Серверные (Java, PHP, C) 11 24.44%
Библиотеки (jQuery, ExtJS) 10 22.22%
Достаточен хороший JS 12 26.67%
Голосовавшие: 45. Этот опрос закрыт

Создать новую тему Ответ
 
Опции темы Искать в теме
  #61 (permalink)  
Старый 31.01.2011, 09:49
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

x-yuri, а можешь выложить сюда дампы? Я тоже погоняю.

С разбаниванием - да, точно. Строки все таки помечены направлениями. Дубляж по объему в 2 раза будет, но из цифр - не сильно значительный наверное. При большом числе пользователей- так наверное и лучше всего сделать. Я про оптимальность собственно и не думал. Миллионы зареганных одновременно пользователей на сайте - больше мечта чем реальность .

Последний раз редактировалось micscr, 31.01.2011 в 10:04.
Ответить с цитированием
  #62 (permalink)  
Старый 31.01.2011, 10:18
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

дамп
Ответить с цитированием
  #63 (permalink)  
Старый 31.01.2011, 10:45
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 15:44.
Ответить с цитированием
  #64 (permalink)  
Старый 31.01.2011, 12:04
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Сообщение от x-yuri
интересно, кстати, micscr, что хоть твой подзапрос вроде никак не связан с внешним, но mysql его пометил как DEPENDENT SUBQUERY
это бажок в мускуле версий до 5.6.
Фиксится так: Добавь плиз индекс в таблицу banned_2:
Код:
ALTER TABLE banned_2 ADD INDEX (idb)
и скажешь результат.
Ответить с цитированием
  #65 (permalink)  
Старый 31.01.2011, 12:45
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

почти догнал
mysql> SELECT u.id
    -> FROM users_2 u
    -> WHERE u.id != 5
    -> AND u.id NOT IN
    ->   (
    ->     SELECT IF(b.idu = 5, b.idb, b.idu)
    ->     FROM banned_2 b
    ->     WHERE b.idu = 5 OR b.idb = 5
    ->   )
    -> ORDER BY RAND()
    -> LIMIT 1;
+-------+
| id    |
+-------+
| 26202 |
+-------+
1 row in set (0.54 sec)

explain:
*************************** 1. row ***************************
           id: 1
  select_type: PRIMARY
        table: u
         type: range
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 13847
        Extra: Using where; Using index; Using temporary; Using filesort
*************************** 2. row ***************************
           id: 2
  select_type: DEPENDENT SUBQUERY
        table: b
         type: index_merge
possible_keys: PRIMARY,idb
          key: PRIMARY,idb
      key_len: 4,4
          ref: NULL
         rows: 3
        Extra: Using union(PRIMARY,idb); Using where


а у меня стоит в PRIMARY KEY добавить origin, иначе если два пользователя попытаются друг друга забанить, один из них рискует получить ошибку 1062 Duplicate entry, а то и целостность нарушится

а по поводу DEPENDENT SUBQUERY, люди даже целую хранимую процедуру написали

Цитата:
The real issue is that the subquery here is not really dependent on any of the columns in the outer query. The subquery will return the same result every time it is evaluated. You know that. I know that. But MySQL does not know that.
Ответить с цитированием
  #66 (permalink)  
Старый 31.01.2011, 14:11
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Цитата:
почти догнал
старался
Ответить с цитированием
  #67 (permalink)  
Старый 02.02.2011, 05:09
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а по поводу целостности, вы как считаете, надо ли рассматривать всякие неизвестно-насколько-вероятные-ситуации? Например, между первым и вторым INSERT'ом mysql вырубило. И вообще, можно ли считать, что INSERT либо выполнился либо нет? Ведь, например, с помощью INSERT можно вставлять несколько записей. Ну и речь не только об INSERT, конечно же

p.s. да, Gozar, должен признать, что чтение английских ресурсов сказывается на мне, но я не уверен, что это плохо
Ответить с цитированием
  #68 (permalink)  
Старый 02.02.2011, 09:10
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Одним insert-ом несколько записей - команда поступит к mysql и выполнится, разрыва думаю не может получиться.
Если сильно критично - возможность транзакций надо поюзать.
Ответить с цитированием
  #69 (permalink)  
Старый 02.02.2011, 09:17
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от micscr
Одним insert-ом несколько записей - команда поступит к mysql и выполнится, разрыва думаю не может получиться.
Если сильно критично - возможность транзакций надо поюзать.
нет, дело не в критичности. Дело в выборе: MyISAM vs InnoDB, READ UNCOMMITTED vs READ COMMITTED vs REPEATABLE READ vs SERIALIZABLE. Исключительно в контексте целостности БД. В каких единицах измеряется критичность? В долларах чтоле? И как ее посчитать, а тем более спроецировать на выбор движка, уровня изоляции? И ты знаешь, в каких именно случаях может нарушиться целостность, без думаю?

Последний раз редактировалось x-yuri, 02.02.2011 в 09:20.
Ответить с цитированием
  #70 (permalink)  
Старый 02.02.2011, 10:18
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Ну вот у тебя если сбой запроса произойдет и одна запись останется без ее дубля - целостность нарушена.
Но например твой код для user1 ищет кандидата user2, находит не того(из-за ошибки). Но перед соединением ты для user2 все равно проверяешь возможность работы с user1. Программа выяснит разногласие, не позволит соединиться и возможно устранит неточность. Или по крону. Т.е. приложение будет работать как надо.
Можно считать что возможность ошибки при записи - не критична .
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23
помогите со js скриптом поиска по текстовой базе MorganStels Ваши сайты и скрипты 4 15.06.2010 10:03
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28
Самая лучшая книга по JS? ulandj Оффтопик 2 06.04.2009 11:35