Использовать транзакции для данной задачи? Мсье знает толк. Правильно, блокируем всё, а мир подождет. Да и для такой задачи использовать InnoDB тоже прекрасное решение, памяти у серверов много, надо занять всю. Вы случайно на каких-нить курсах типа Оракла не учились, эти ребята хорошо так учат, лишь бы побольше лицензий покупали, всё сделают для того, чтобы всё тормозило.
Проблема в неатомарности операций. Вы берете значение из бд, затем апдейтите, в итоге если очень активно стучаться, то одновременно может запустится множество инстансов скрипта, все сначала возьмут значение с бд, предположим 2, а затем это множество (к примеру 15) изменят значения в бд, но при этом в переменной будет у всех 2 и ни один не выключит страницу.
Как минимум первый update и select надо поменять местами.
И, ...., приложение упало. С UI можно работать только из UI треда. А для того чтобы всё не падало есть семейство методов Invoke у базового класса контролов. Invoke с примером
Рисовать по таймеру не есть хорошее решение. Invalidate вызывается уж не так и часто, таймер только организует либо лишний тормоз (в случае если рисовать слишком часто), либо понизит отзывчивость интерфейса (если рисовать слишком редко).
Армянское Радио: Вы не поверите, это даже в .NET нельзя, там сокрыто за компилятором, но в итоге работает именно так как указано в примере. Ну и да, бензиновый авто на дизельном топливе тоже не поедет. И если C++ знает о вызовах C, то вот C даже и не знает, что это за зверь такой C++. И да, это разные языки программирования, и если один даёт совместимость, то другой этого делать не обязан.