Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вопрос по Мат.операции и транзакции
Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013 Откуда: Санкт-Петербург
Помог: 6 раз(а)
Приветствую.
Тренировался с sql запросами на одном сайте, и столкнулся с элементарной математической коллизией. Всегда думал что среднее равно среднему средних
Есть такой набор чисел (12):
350
350
400
600
600
950
970
980
1050
1150
700
950
их среднее значение = 754,1666666667
А теперь если разбить верхний набор чисел на 2 группы и посчитать их среднее для каждой группы:
1 группа чисел (8)
350
350
400
600
600
950
970
980
------Среднее----
650
2 группа чисел (4)
1050
1150
700
950
------Среднее----
962,5
И вычислить среднее средних
(650 +962,5)/2 =806,25
получим
754,1666666667 <> 806,25
Где подвох?
И второй по транзакции вопрос (теоретический)
смысл транзакции либо все выполняется либо ничего. Но для выполнения серверу требуется время. Если во время транзакции вырубается питание сервера, а он допустим делал миллион insert-ов, и вот на полумиллионом вырубилось питание. Как я понимаю из теории транзакции, транзакции не прошла, но что станет с первыми insert-оми при включении сервера?
----- Умные мысли приходят тогда, когда все глупости уже сделаны...
3d_killer
Отправлено: 28 Марта, 2014 - 12:20:16
Участник
Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011 Откуда: Ростов-на-Дону
Помог: 21 раз(а)
(1+2+3+4+5+6)/6
и
(1+2)/2 + (3+4)/2 + (5+6)/2
вобще как бы разные математические операции среднее из всего набора и среднее средних это 2 разные вещи
EuGen
Отправлено: 28 Марта, 2014 - 12:27:06
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Flash_PR пишет:
смысл транзакции либо все выполняется либо ничего. Но для выполнения серверу требуется время. Если во время транзакции вырубается питание сервера, а он допустим делал миллион insert-ов, и вот на полумиллионом вырубилось питание. Как я понимаю из теории транзакции, транзакции не прошла, но что станет с первыми insert-оми при включении сервера?
Зависит от того, как реализован storage-engine. Незавершённые транзакции, как правило, откатываются до того момента, когда данные находились в целостном состоянии (на начало транзакции). Для этого могут использоваться сегменты отката или прочие инструменты внутри СУБД. Впрочем, ничто не надёжно на 100%. и в случае повреждения этих инструментов контроля - данные будут повреждены безвозвратно.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Flash_PR
Отправлено: 28 Марта, 2014 - 12:27:47
Посетитель
Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013 Откуда: Санкт-Петербург
Помог: 6 раз(а)
3d_killer пишет:
(1+2+3+4+5+6)/6
и
(1+2)/2 + (3+4)/2 + (5+6)/2
вобще как бы разные математические операции среднее из всего набора и среднее средних это 2 разные вещи
только
(1+2+3+4+5+6)/6 = 3.5
Здесь ошибка среднее средних (1+2)/2 + (3+4)/2 + (5+6)/2 надо ((1+2)/2 + (3+4)/2 + (5+6)/2)/3 =3.5 (Добавление)
EuGen пишет:
Зависит от того, как реализован storage-engine. Незавершённые транзакции, как правило, откатываются до того момента, когда данные находились в целостном состоянии (на начало транзакции)
Т.е. грубо говоря есть какой-то временный файл с проделанными операциями, по которому сервер сверяется? Теоретически получается транзакция может быть сделана на половину.
----- Умные мысли приходят тогда, когда все глупости уже сделаны...
EuGen
Отправлено: 28 Марта, 2014 - 12:31:34
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Flash_PR пишет:
Т.е. грубо говоря есть какой-то временный файл с проделанными операциями, по которому сервер сверяется7
Это не файл по смыслу (но физически всё есть файл) - это данные, находящиеся в файлах тех инструметов СУБД, которые отвечают за контроль целостности транзакций.
"Среднее средних" - верно не во всех случаях
Если взять (A1 + A2 + ... + An) / n и затем среднее для первого члена и оставшейся суммы:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.