@dba_ru

Страница 677 из 718
Fike
04.10.2018
14:01:27
Я знаю что такое транзакции
Ну серьезно, такого вопроса бы не возникало. В момент выполнения запроса ты работаешь со слепком данных.

Ilia
04.10.2018
14:01:29
А оно точно прям нужно? Или ты так привык что по другому не умеешь думать?
Нужно или нет другой вопрос. Но на объем кода это точно влияет

alex
04.10.2018
14:01:33
@etkee давай в личку

Fike
04.10.2018
14:01:35
Google
Fike
04.10.2018
14:01:40
давай не

alex
04.10.2018
14:01:50
спаму много )

Al
04.10.2018
14:01:51
спаму много )
Давай всех перебаним. И оставим в группе только тебя одного. Будешь наслаждаться отсутствием спама

Yaroslav
04.10.2018
14:03:49
Ок, но как это к задаче вычисления суммы относится?
Так, что это, вообще говоря, может зависеть от реализации и уровня изоляции... хотя настолько "весёлую" СУБД надо ещё найти. ;) Короче говоря, например, на READ COMMITTED стандарт не запрещает, чтобы: SELECT (SELECT SUM(x) FROM a WHERE k) AS x1, (SELECT SUM(x) FROM a WHERE k) AS x2. Получалось, что x1 <> x2.

Yaroslav
04.10.2018
14:05:34
Не зависит. Ты ошибаешься
No you. С чего бы это?

Ilia
04.10.2018
14:07:27
С того бы что вычисление агрегатов и прочих выражений в списке вывода не зависит от предикатов, определяющих критерии отбора записей таблицы для обработки.

Yaroslav
04.10.2018
14:08:03
ну вот тут получается 3 запроса с вложенными, SUM(x) - всегда будет одинакова во всех трёх запросах?
Про MySQL Вам уже ответили — там всё будет хорошо. Это я про теоретическую возможность (можно и на практике на "классическом" блокировочнике продемонстрировать... но к MySQL это всё не относится). > то есть слепок базы будет один? Это неважно. Важно то, что этой проблемы в MySQL нет.

Crestoff
04.10.2018
14:08:44
и кстати MVCC в mysql применима не для всех случаев! а для Maria, InnoDB, Falcon, XtraDB, если верить вики

Google
Crestoff
04.10.2018
14:10:08
я к этому и веду, что вычисление, к примеру небольшого объема - не принципиален, но если бигдата , то сумму считать 10 раз накладно

Yaroslav
04.10.2018
14:11:15
Не видел
Короче говоря, например, на READ COMMITTED стандарт не запрещает, чтобы: SELECT (SELECT SUM(x) FROM a WHERE k) AS x1, (SELECT SUM(x) FROM a WHERE k) AS x2. Получалось, что x1 <> x2.

Ageev
04.10.2018
14:12:03
Coздaли ЗакрытоеСообщество?? для свoих. Первые 100 мecт бeсплaтно

Yaroslav
04.10.2018
14:12:29
я к этому и веду, что вычисление, к примеру небольшого объема - не принципиален, но если бигдата , то сумму считать 10 раз накладно
Ну это Вам MySQL-щики скорее подскажут, вычисляет он или нет... но я надеюсь, что он не настолько тупой.

Ilia
04.10.2018
14:13:15
Coздaли ЗакрытоеСообщество?? для свoих. Первые 100 мecт бeсплaтно
Алекс блин дай мне банхарер я его покараю!

Yaroslav
04.10.2018
14:13:51
Никакая СУБД тебе не будет 20 раз считать один и тот же подзапрос ...
Он не один и тот же. Это два одинаковых. И много какие СУБД честно будут их считать отдельно.

Ilia
04.10.2018
14:14:07
Один и тот же

Crestoff
04.10.2018
14:14:59
в общем никто не знает будет ли он сумму считать N раз или будет помнить результат первой суммы и юзать его...(

Yaroslav
04.10.2018
14:16:24
Пример давай таких. Чтобы их сразу в утиль списать.
> Один и тот же Нет. > Пример давай таких. Чтобы их сразу в утиль списать. Ну начинайте списывать: MS SQL, PostgreSQL... кто дополнит? ;)

Yaroslav
04.10.2018
14:17:36
Ни в одной из вышеперечисленных не будет такого
Ещё раз посмотрите на мой пример. Внимательно. Вам планы показать?

Crestoff
04.10.2018
14:17:39
Yaroslav
04.10.2018
14:19:38
На всякий случай все же дай мне для контроля запрос, чтобы я точно мог сказать
Да вот же он! SELECT (SELECT SUM(x) FROM a WHERE k) AS x1, (SELECT SUM(x) FROM a WHERE k) AS x2. Я утверждаю, что эти СУБД выполнят вычисление x1 и x2 отдельно. Т.е. (SELECT SUM(x) FROM a WHERE k) будет вычислено два раза.

Google
lost
04.10.2018
14:20:34
ты путаешь мягкое с теплым

Crestoff
04.10.2018
14:20:35
На всякий случай все же дай мне для контроля запрос, чтобы я точно мог сказать
SELECT SUM(visit_amount) AS raws, COUNT(visit_amount) AS uniques, COUNT(visit_amount)/SUM(visit_amount) AS prod

Al
04.10.2018
14:22:52
Crestoff
04.10.2018
14:23:34
Al
04.10.2018
14:23:40
ты путаешь мягкое с теплым
Он пытается заместо правильно организованых данных изобрести серебряную пулю для говнокодеров

ага то есть частное писать ещё с плавающей точкой))
Да хоть с летающей точкой или точкой роющей тоннели. Нужно организовывать хранение данных в соответствии с потребностями. А не валить все в кучу в надежде что потом разберем

Crestoff
04.10.2018
14:27:17
Тут ты не прав

Ilia
04.10.2018
14:27:27
Да вот же он! SELECT (SELECT SUM(x) FROM a WHERE k) AS x1, (SELECT SUM(x) FROM a WHERE k) AS x2. Я утверждаю, что эти СУБД выполнят вычисление x1 и x2 отдельно. Т.е. (SELECT SUM(x) FROM a WHERE k) будет вычислено два раза.
Нет. Это общее место (одно из) в опримизаторах СУБД, называется либо сабквери кэш либо просто оптимизация выражений. Любое выражение, указанное хоть 200 раз, будет реально считаться только один раз. Любой разраб СУБД про это знает.

Ilia
04.10.2018
14:29:09
SELECT SUM(visit_amount) AS raws, COUNT(visit_amount) AS uniques, COUNT(visit_amount)/SUM(visit_amount) AS prod
Да, тут SUM и COUNT будут считаться по одному разу. Потом вычислится производное выражение SUM/COUNT()

Yaroslav
04.10.2018
14:30:21
Al
04.10.2018
14:30:41
Тут ты не прав
Эт в чем же я не прав? Даже на свалке мусор сортируют. Так с какого перепуга данные нужно тупо сваливать в кучу и потом пытаться их перебирать изобретая оптимизаторы?

Ilia
04.10.2018
14:31:02
Вы неправы. Сами посмотрите планы или показать?
Главное, план тебе будет тем ещё доказательством, что это вычисляется один раз, или несколько.

Yaroslav
04.10.2018
14:31:08
вот эта херня в мускуле будет посчитана дважды, увы, но посчитана она будет одинаково
В MySQL-е — да. Но, как я уже писал, это не обязательно (я писал, когда).

Ilia
04.10.2018
14:31:12
В смысле по плану ты это не поймёшь.

lost
04.10.2018
14:31:27
Google
Yaroslav
04.10.2018
14:31:45
Покажи
Да вот же он! SELECT (SELECT SUM(x) FROM a WHERE k) AS x1, (SELECT SUM(x) FROM a WHERE k) AS x2. Я утверждаю, что эти СУБД выполнят вычисление x1 и x2 отдельно. Т.е. (SELECT SUM(x) FROM a WHERE k) будет вычислено два раза.

Ilia
04.10.2018
14:32:15
Я приводил Вам не этот пример! В четвёртый раз показать?
Я просил этого лисёнка дать мне его конкретный запрос. ОН дал. Это не относится к поддиалогу с тобой.

Yaroslav
04.10.2018
14:32:20
В смысле по плану ты это не поймёшь.
Серьёзно? В этих СУБД по плану это видно элементарно, вообще-то. ;)

Yaroslav
04.10.2018
14:32:55
тут ты не прав
Ну так покажите пример.

Yaroslav
04.10.2018
14:33:36
Я АБСОЛЮТНО СЕРЬЁЗНО говорю.
И Вы покажите пример.

Fike
04.10.2018
14:33:42
круговую диаграмму представь, это 100% , теперь разбей на сектора, каждой базе будет свой сектор) где-то больше, где-то меньше..
Есть три двери, за двумя из них mysql, за одной postgres. После того, как ты выбрал наугад одну из них, ведущий открывает одну из двух других - там MySQL - и спрашивает, будешь ли ты менять свой выбор. Поменяешь?

lost
04.10.2018
14:33:53
Ну так покажите пример.
по плану ты увидишь только что 2 сабквери скалярных есть, и что использовалось для запроса, а вот сколько из них реально выполнялось - только профайл

Al
04.10.2018
14:34:35
Я просил этого лисёнка дать мне его конкретный запрос. ОН дал. Это не относится к поддиалогу с тобой.
Про лисенка.. Я не програмер. Копипащу програмерские умные слова в чатик. А они мне своими програмерскими умными словами отвечают. Это почти как мяукать на кота или гавкать на собаку. Прикольно. Как будто общаемся.

Fike
04.10.2018
14:34:37
спаму много )
пусть люди на ус мотают

Fike
04.10.2018
14:35:28
Al
04.10.2018
14:35:38
lost
04.10.2018
14:35:57
Ilia
04.10.2018
14:36:13
И Вы покажите пример.
Пример не буду показывать. Но словами скажу. ПЛан выполнения запроса -- это направленный граф. НЕ ДЕРЕВО. Но если его показывать не в виде дерева, будет неудобно его читать. Поэтому люди при показе плана часто делают его имено деревом, ТОЛЬКО для показа. Естественно, чтобы разорвать циклы, некоторые ветки удаляются, а некоротые вершины дублируются. (ТОЛЬКО ПРИ ПОКАЗЕ)

Al
04.10.2018
14:36:19
мммм бигжата в мускуле
Дыааа.. все 27 килобайт данных

lost
04.10.2018
14:36:53
Google
Ilia
04.10.2018
14:37:45
вы найдите сначала адеквата, до сих пор сидящего на MyISAM
Не ну логи какие-то хранить в MyISAM ок, нет разве?

Crestoff
04.10.2018
14:38:33
Проще что?
проще понимать больше людей.

Ilia
04.10.2018
14:38:52
вообще не ок
А почему ? Пишется быстрее, коммитов нет, лога нет. А если что там ухнется -- да и насрать...

Al
04.10.2018
14:38:52
проще понимать больше людей.
А оно мне точно нужно?

lost
04.10.2018
14:39:42
Al
04.10.2018
14:39:51
А почему ? Пишется быстрее, коммитов нет, лога нет. А если что там ухнется -- да и насрать...
Если хранить что то на что насрать если оно ухнется. То нахрена оно нужно вообще его хранить?

Crestoff
04.10.2018
14:40:00
А оно мне точно нужно?
Не знаю. А по поводу сортировки мусора - ты прав, но повторюсь, что в моём случае результаты элементарных арифметических операций писать в базу - это тупо, когда у меня их может быть очень много...

Fike
04.10.2018
14:40:03
зачем писать в RDBMS append-only data?

lost
04.10.2018
14:40:18
зачем писать в RDBMS append-only data?
вот тут я соглашусь

Ilia
04.10.2018
14:40:19
блокировка уровня таблицы, нифига оно не быстрее
Так если один клиент только пишет, и нормально

lost
04.10.2018
14:40:46
Так если один клиент только пишет, и нормально
в современных реалиях - обычно вдесятером пытаются натянуть сову на глобус, так что он мало где применим

Fike
04.10.2018
14:41:00
брякну-ка я тоже умным словом: комбинаторный взрыв

Ilia
04.10.2018
14:41:38
Я прочитал и думаю... причём тут мой конкретный пример и вопрос?!
Ну не понимаешь, и ладно. Мой лимит времени выходит... И так уже перебрал...

Страница 677 из 718