I think you are confused about locks and the binlog both.
Locks lock tables. This disallows changes. READ locks prevent changes, but do
not block anyone from READING from the tables, and if I recall correctly, also
allow other people to get READ locks at the same time. WRITE locks block any
access to the tables by other connections. You can test this yourself very
easily. But regardless, you cannot change a table that is locked.
As for the binlog, it records changes that have happened to the database. If I
understand you correctly, you may be thinking of it as a "buffer of changes not
yet applied, which will be applied when the lock is released." That is not how
it works. If you have a FLUSH TABLES WITH READ LOCK open, all tables are
flushed to disk and locked, and there will be *no changes* because everything is
locked. Therefore nothing other connections try to do will be written to the
binlog while you have the locks open (unless you make those changes yourself,
which I have never tried to do).
Ananda Kumar wrote:
> Hi Baron,
> Its only a read lock, so changes on these table should be allowed, that is
> what the documentaion say. And the changes will be in bin-log till the READ
> lock is held.
> On 5/30/07, Baron Schwartz <baron@stripped> wrote:
>> Ananda Kumar wrote:
>> > Hi All,
>> > This question just for information sake.
>> > If i do
>> > flush table lock read;
>> I think you mean FLUSH TABLES WITH READ LOCK?
>> > Any changes happening on tables during this period, will it be viewable
>> > another user or will the user have to wait till the lock is released to
>> > the new changes
>> > And once the lock is released, does mysql apply all the changes from
>> > bin-log
>> > to the respective tables.
>> The tables are locked. There will be no changes while they are locked.
>> I don't think I really understand your question.