В принципе, если привязаться конкретно к mysql, то можно сделать пользовательскую переменную, получится что-то вроде
set @numrow:=0;
update `table` set `float`=if((@numrow:=@numrow+1) <= 5, `float`*100, 1) order by `float` desc
Но почти наверняка наврал где-нибудь в синтаксисе обращения к переменной.
Это простой и понятный код. Что тут сложного? Для новых версий mysql можно апдейт переписать так:
update `table` set `float` if (exists (select 1 from `max5float` where maxid=id), `float`*100, 1)
что тут сложного-то?
А, это объясняет. Я предлагал так:
begin;
SELECT id /*, другие поля, какие нужны*/ FROM `list` WHERE `processing` = 0 LIMIT 10 FOR UPDATE
UPDATE `list` SET processing=-1 WHERE id IN (заполнить на стороне приложения)
commit;
Ну если всё влезает в память, то частота будет играть свою роль.
Между 4-х канальным и двухканальным, к тому же в гигагерц разницы по частоте, разрыв будет. И должен быть довольно заметным даже на практике, а не только в синтетике.
Вот между парой 4-х канальных комплектов, но в те же 2400 и 1333 мгц - сомневаюсь. Более низкая латентность на низкой частоте частично скомпенсирует разницу в ПСП.
@inkvizitor68sl , спасибо. Это я, правда, уже прочитал.
Отказоустойчивость, горизонтальное масштабирование - это известно. Но раз появилась возможность поинтересоваться о приличных книгах, то надо спросить.
set @numrow:=0;
update `table` set `float`=if((@numrow:=@numrow+1) <= 5, `float`*100, 1) order by `float` desc
Но почти наверняка наврал где-нибудь в синтаксисе обращения к переменной.