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 :: Вопрос по Мат.операции и транзакции

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Flash_PR
Отправлено: 28 Марта, 2014 - 12:11:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 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-оми при включении сервера?


-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
3d_killer
Отправлено: 28 Марта, 2014 - 12:20:16
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




(1+2+3+4+5+6)/6
и
(1+2)/2 + (3+4)/2 + (5+6)/2

вобще как бы разные математические операции среднее из всего набора и среднее средних это 2 разные вещи
 
My status
 Top
EuGen Администратор
Отправлено: 28 Марта, 2014 - 12:27:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Flash_PR пишет:
смысл транзакции либо все выполняется либо ничего. Но для выполнения серверу требуется время. Если во время транзакции вырубается питание сервера, а он допустим делал миллион insert-ов, и вот на полумиллионом вырубилось питание. Как я понимаю из теории транзакции, транзакции не прошла, но что станет с первыми insert-оми при включении сервера?

Зависит от того, как реализован storage-engine. Незавершённые транзакции, как правило, откатываются до того момента, когда данные находились в целостном состоянии (на начало транзакции). Для этого могут использоваться сегменты отката или прочие инструменты внутри СУБД. Впрочем, ничто не надёжно на 100%. и в случае повреждения этих инструментов контроля - данные будут повреждены безвозвратно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Flash_PR
Отправлено: 28 Марта, 2014 - 12:27:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 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. Незавершённые транзакции, как правило, откатываются до того момента, когда данные находились в целостном состоянии (на начало транзакции)


Т.е. грубо говоря есть какой-то временный файл с проделанными операциями, по которому сервер сверяется? Теоретически получается транзакция может быть сделана на половину.

(Отредактировано автором: 28 Марта, 2014 - 12:32:50)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
EuGen Администратор
Отправлено: 28 Марта, 2014 - 12:31:34
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Flash_PR пишет:
Т.е. грубо говоря есть какой-то временный файл с проделанными операциями, по которому сервер сверяется7

Это не файл по смыслу (но физически всё есть файл) - это данные, находящиеся в файлах тех инструметов СУБД, которые отвечают за контроль целостности транзакций.

"Среднее средних" - верно не во всех случаях

Если взять (A1 + A2 + ... + An) / n и затем среднее для первого члена и оставшейся суммы:

A1/1 + (A2 + ... +An)/(n-1) = ((n-1)A1 + A2 + ... + An)/(n-1)

Среднее этих средних есть

((n-1)A1 + A2 + ... + An)/(2n-2)

(так как слагаемых 2) - очевидно, это не равно исходному среднему. Простой пример: 3, 10, 5. Имеем:

(3 + 10 + 5) / 3 = 6,

однако

(3 + (10 + 5) / 2) /2 = 10.5/2 = 5.25 != 6


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB