equivalent thing of mtr in mysql
Hi, guys. I'm new here. I'm eager to figure out what is the equivalent thing of mtr in mysql in PG. When a dml operation occurs, it may modify multiple pages and gererate multiple redo log records. mtr can make those logs atomically be transferred to log buffer and written to disk. I think same situation exists in PG, but I can't find something like mtr, why ? Any blogs that explain this will be appreciated.
Re:Re: equivalent thing of mtr in mysql
I'm sorry, first time to post a thread. mtr is short for mini-transaction. About mtr in mysql, we can refer to https://dev.mysql.com/doc/refman/8.0/en/glossary.html or https://dev.mysql.com/blog-archive/mysql-8-0-new-lock-free-scalable-wal-design/ So an insert in mysql, wrapped in a user transaction, may result in multiple mini-transactions, one is responsible for writing redo for undo, the other one for writing redo for clustered index/secondary index, and so on. Each mtr may modify multiple pages, whose redo logs are guaranteed by mtr to be written into disk or none of them are written. At 2022-07-13 02:57:28, "Peter J. Holzer" wrote: >On 2022-07-12 22:39:31 +0800, merryok wrote: >> Hi, guys. I'm new here. >> >> I'm eager to figure out what is the equivalent thing of mtr in mysql in PG. > >What is MTR? A search for "mtr mysql" yields "mysql test run" and >"multi-threaded replication", neither of which seems to be what you are >talking about. When referring to concepts from other databases, please >include a link to the relevant documentation. > >> When a dml operation occurs, it may modify multiple pages and gererate >> multiple >> redo log records. mtr can make those logs atomically be transferred to log >> buffer and written to disk. >> I think same situation exists in PG, but I can't find something like mtr, >> why ? > >Transactions in PostgreSQL are always atomic (That should also be the >case with MySQL, unless you use MyISAM tables). Ensuring that these >changes also result in an atomic disk write seems to be both pointless >and impossible (that might be many gigabytes of data). > >hp > >-- > _ | Peter J. Holzer| Story must make more sense than reality. >|_|_) || >| | | h...@hjp.at |-- Charles Stross, "Creative writing >__/ | http://www.hjp.at/ | challenge!"
Re: equivalent thing of mtr in mysql
I've read the doc, and it doesn't help too much. Finally I've found START_CRIT_SECTION and END_CRIT_SECTION. It's like mtr.start(), mtr.commit() in mysql. May I ask why many places are wrapped into START_CRIT_SECTION/END_CRIT_SECTION during a single dml operation ? And if Assert(CritSectionCount > 0) isn't satisfied (CritSectionCount need't be protected ?), PG server will panic and exit ? If so, what's the probability of that ? 发自我的小米手机在 Adrian Klaver ,2022年7月16日 23:30写道:On 7/15/22 18:31, merryok wrote: > I'm sorry, first time to post a thread. mtr is short for mini-transaction. > About mtr in mysql, we can refer to > https://dev.mysql.com/doc/refman/8.0/en/glossary.html > <https://dev.mysql.com/doc/refman/8.0/en/glossary.html> or > https://dev.mysql.com/blog-archive/mysql-8-0-new-lock-free-scalable-wal-design/ > <https://dev.mysql.com/blog-archive/mysql-8-0-new-lock-free-scalable-wal-design/> > > > > So an insert in mysql, wrapped in a user transaction, may result in > multiple mini-transactions, one is responsible for writing redo for > undo, the other one for writing redo for clustered index/secondary > index, and so on. Each mtr may modify multiple pages, whose redo logs > are guaranteed by mtr to be written into disk or none of them are written. > Read this: https://www.postgresql.org/docs/current/wal.html and see if it answers your questions. -- Adrian Klaver adrian.kla...@aklaver.com