Как вносить изменения в базу последовательно, т.е. выстраивать в очередь в определенном моменте?
эм. вы что делаете SELECT rating FROM users WHERE userid = :id, потом делаете rating++, потом делаете UPDATE users SET rating=:rating WHERE userid=:id? Во-первых, вы можете просто делать UPDATE users SET rating=rating+1 WHERE userid=:userid. Во-вторых, можете выстроить очередь. При изменении рейтинга в очередь ложить действие (+ или -), :userid, потом обработчик очереди сам сделает + или — над рейтингом очереди, но тогда пользователь не увидит мгновенного изменения рейтинга. В-третьих можно рейтинги пользователей держать в кэше, делать +- в кэше, показывать из кэша, а кэш синхронизировать с базой несколько раз в день или по какому-нибудь событию.
Не хотите вынести код инкремента или декремента рейтинга в процедуру типа incrementRating(@userId)?