{"id":63,"date":"2003-03-13T19:39:42","date_gmt":"2003-03-14T00:39:42","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/?p=63"},"modified":"2003-03-13T19:39:42","modified_gmt":"2003-03-14T00:39:42","slug":"transactions","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2003\/03\/13\/transactions\/","title":{"rendered":"transactions"},"content":{"rendered":"<p>I&#8217;m thinking that I can easily do multiple FS ops in one transaction with some careful structuring of the journal.<\/p>\n<p>The only problem with this is the old problem of journal size. Unlike a normal journaled FS, with user transactions, we may be dealing with a lot more data in many transactions and a static log size may be a bad thing (and severely limit the size of transactions that are possible).<\/p>\n<p>I&#8217;m thinking that having an expandable log (perhaps a linked-list kind of approach) could be quite useful. In memory, we&#8217;ll probably need another data structure to have things remotely efficient (esp if we want to know where to write additional log entries).<\/p>\n<p>This could also be nice performance wise as we only have to lock one of these when doing operations on the log.<\/p>\n<p>I&#8217;ve also been thinking about weird things like delayed index updates. That is, you update a file (or attributes) and it doesn&#8217;t update the index pointing to it on disk until it is conveinient for it to do so.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m thinking that I can easily do multiple FS ops in one transaction with some careful structuring of the journal. The only problem with this is the old problem of journal size. Unlike a normal journaled FS, with user transactions, &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2003\/03\/13\/transactions\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[4],"tags":[],"class_list":["post-63","post","type-post","status-publish","format-standard","hentry","category-hons-project"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-11","jetpack-related-posts":[{"id":78,"url":"https:\/\/www.flamingspork.com\/blog\/2003\/03\/29\/notes-from-the-whiteboard\/","url_meta":{"origin":63,"position":0},"title":"notes from the whiteboard","author":"Stewart Smith","date":"2003-03-29","format":false,"excerpt":"Linux: - transactions on UNIX filesystems - versioning in UNIX VFS environment - extending UNIX FS model to accommodate advanced DB like features Walnut: - transactions","rel":"","context":"In &quot;hons-project&quot;","block_context":{"text":"hons-project","link":"https:\/\/www.flamingspork.com\/blog\/category\/hons-project\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":759,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/11\/13\/disk-allocation-xfs-ndb-disk-data-and-more\/","url_meta":{"origin":63,"position":1},"title":"Disk allocation, XFS, NDB Disk Data and more&#8230;","author":"Stewart Smith","date":"2006-11-13","format":false,"excerpt":"I've talked about disk space allocation previously, mainly revolving around XFS (namely because it's what I use, a sensible choice for large file systems and large files and has a nice suite of tools for digging into what's going on).Most people write software that just calls write(2) (or libc things\u2026","rel":"","context":"In &quot;linux-kernel&quot;","block_context":{"text":"linux-kernel","link":"https:\/\/www.flamingspork.com\/blog\/category\/linux-kernel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3801,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/09\/19\/mysql-architecture\/","url_meta":{"origin":63,"position":2},"title":"Some current MySQL Architecture writings","author":"Stewart Smith","date":"2014-09-19","format":false,"excerpt":"So, I've been looking around for a while (and a few times now) for any good resources that cover a bunch of MySQL architecture and technical details aimed towards the technically proficient but not MySQL literate audience. I haven't really found anything. I mean, there's the (huge and very detailed)\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2250,"url":"https:\/\/www.flamingspork.com\/blog\/2011\/01\/06\/no-implicit-commit-on-the-road-to-transactional-ddl\/","url_meta":{"origin":63,"position":3},"title":"No implicit commit (on the road to transactional DDL)","author":"Stewart Smith","date":"2011-01-06","format":false,"excerpt":"A long time ago, in a time that can only serve to make some feel old and others older, MySQL didn't support transactions. Each statement was executed as it went, there was no ROLLBACK (or COMMIT or crash recovery etc). Then there were transactions. Other RDBMSs implement auto_commit functionality, but\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":71,"url":"https:\/\/www.flamingspork.com\/blog\/2003\/03\/19\/reading-all-about-how-to-store-stuff-for-reading\/","url_meta":{"origin":63,"position":4},"title":"reading all about how to store stuff for reading","author":"Stewart Smith","date":"2003-03-19","format":false,"excerpt":"Otherwise titled: A day of reading about Filesystems. I'm managing to continually find stuff I haven't already read. I think this is a good thing. I'm clearly now going to have to do some more research into how RDMBS do things. The idea of Snapshots sound interesting, and may prove\u2026","rel":"","context":"In &quot;hons-project&quot;","block_context":{"text":"hons-project","link":"https:\/\/www.flamingspork.com\/blog\/category\/hons-project\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2223,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/12\/06\/replication-log-inside-innodb\/","url_meta":{"origin":63,"position":5},"title":"Replication log inside InnoDB","author":"Stewart Smith","date":"2010-12-06","format":false,"excerpt":"The MySQL replication system has always had the replication log (\"binlog\") as a separate set of files on disk. Originally, this really didn't matter as, well, MyISAM wasn't transactional or crash safe so the binlog didn't need to be either. If you crashed on a busy write workload, your replication\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/63","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=63"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/63\/revisions"}],"predecessor-version":[{"id":2602,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/63\/revisions\/2602"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=63"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=63"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}