I\'m making a web site where I would like to increment a counter in a standard MyISAM table.
Simplified example:
UPDATE votes SET num = num + 1;
MyISAM tables use table level locking. This means that the whole table will be locked during the execution of your update query. So the answer for your simplified use case is: yes, this is thread safe. But this may not be the case if you use another storage engine or your update includes multiple tables.
Here is a quote from the MySQL manual for more clarity:
Table locking enables many sessions to read from a table at the same time, but if a session wants to write to a table, it must first get exclusive access. During the update, all other sessions that want to access this particular table must wait until the update is done.
You can also consider using auto increment columns, transactions or external synchronization if that fits to your design.
Cheers!