|
Результаты опроса: Какие еще технологии нужно знать
|
|
CMS
|
|
12 |
26.67% |
Серверные (Java, PHP, C)
|
|
11 |
24.44% |
Библиотеки (jQuery, ExtJS)
|
|
10 |
22.22% |
Достаточен хороший JS
|
|
12 |
26.67% |
|
31.01.2011, 09:49
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
x-yuri, а можешь выложить сюда дампы? Я тоже погоняю.
С разбаниванием - да, точно. Строки все таки помечены направлениями. Дубляж по объему в 2 раза будет, но из цифр - не сильно значительный наверное. При большом числе пользователей- так наверное и лучше всего сделать. Я про оптимальность собственно и не думал. Миллионы зареганных одновременно пользователей на сайте - больше мечта чем реальность .
Последний раз редактировалось micscr, 31.01.2011 в 10:04.
|
|
31.01.2011, 10:18
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
|
|
31.01.2011, 10:45
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 02.02.2011 в 15:44.
|
|
31.01.2011, 12:04
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Сообщение от x-yuri
|
интересно, кстати, micscr, что хоть твой подзапрос вроде никак не связан с внешним, но mysql его пометил как DEPENDENT SUBQUERY
|
это бажок в мускуле версий до 5.6.
Фиксится так: Добавь плиз индекс в таблицу banned_2:
Код:
|
ALTER TABLE banned_2 ADD INDEX (idb) |
и скажешь результат.
|
|
31.01.2011, 12:45
|
|
|
|
Регистрация: 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.
|
|
|
31.01.2011, 14:11
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Цитата:
|
почти догнал
|
старался
|
|
02.02.2011, 05:09
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
а по поводу целостности, вы как считаете, надо ли рассматривать всякие неизвестно-насколько-вероятные-ситуации? Например, между первым и вторым INSERT'ом mysql вырубило. И вообще, можно ли считать, что INSERT либо выполнился либо нет? Ведь, например, с помощью INSERT можно вставлять несколько записей. Ну и речь не только об INSERT, конечно же
p.s. да, Gozar, должен признать, что чтение английских ресурсов сказывается на мне, но я не уверен, что это плохо
|
|
02.02.2011, 09:10
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Одним insert-ом несколько записей - команда поступит к mysql и выполнится, разрыва думаю не может получиться.
Если сильно критично - возможность транзакций надо поюзать.
|
|
02.02.2011, 09:17
|
|
|
|
Регистрация: 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.
|
|
02.02.2011, 10:18
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Ну вот у тебя если сбой запроса произойдет и одна запись останется без ее дубля - целостность нарушена.
Но например твой код для user1 ищет кандидата user2, находит не того(из-за ошибки). Но перед соединением ты для user2 все равно проверяешь возможность работы с user1. Программа выяснит разногласие, не позволит соединиться и возможно устранит неточность. Или по крону. Т.е. приложение будет работать как надо.
Можно считать что возможность ошибки при записи - не критична .
|
|
|
|