На техническом уровне вы можете использовать возможности блокировки таблиц (или блокировки строк) MySQL. Это позволит вам определить, действительно ли кто-то вычисляет что-то, используя таблицу. С другой стороны, этот метод потребует многих соображений, например, что произойдет в случае сбоя процесса и т. Д.
Однако на практическом уровне я сомневаюсь, что вы захотите сделать что-то подобное.
Такие операторы, как sum () или avg () в MySQL, уже оптимизированы для этой цели. Если вам нужно получить сумму по некоторым столбцам таблицы и получить ответ в таблице, вы можете использовать представление или создать временную таблицу (возможно, но медленнее). У вас не должно быть столбца, который содержит значение, которое можно вычислить из других столбцов. Эта ситуация приводит к несоответствиям, поскольку неясно, какое поле является истинным, если отношение не сбалансировано. (Это ошибка входного скрипта или преднамеренное повторное использование поля каким-то программистом?)
Во-вторых, обязательно используйте таблицы InnoDB в вашем экземпляре MySQL, иначе ваша система не будет полностью ACID-совместимой, то есть вы не получите требуемый атомарный характер.