Episode 510: Deepthi Sigireddi on How Vitess Scales MySQL

Topics covered
Popular Clips
Episode Highlights
Data Consistency
Vitess employs various methods to maintain data consistency across distributed databases, crucial for ensuring reliable transactions. explains that in a traditional RDBMS, consistency involves enforcing database-level rules like uniqueness constraints and default values 1. However, in a distributed system like Vitess, these constraints must be re-implemented across multiple shards. This is particularly important when a column value needs to be unique across all shards, which Vitess ensures if the column is part of the sharding scheme 1.
Transaction Modes
Vitess supports different transaction modes, each with implications for database consistency and performance. In unsharded mode, Vitess is fully ACID compliant, similar to MySQL. However, in sharded mode, some guarantees break down, affecting atomicity 2. Deepthi describes three transaction modes: single, multi, and best effort. The multi mode, for example, involves writing data in parallel across shards but commits sequentially, which can lead to non-atomic transactions if a commit fails 2.
Distributed Transactions
Distributed transactions in Vitess involve a prepare and commit process, ensuring either complete success or failure. If a transaction fails, Vitess attempts resolution, though this can be slower than best-effort modes 3. Deepthi also discusses isolation and durability, noting that Vitess does not provide read committed isolation in multi mode, leading to potential fractured reads 4. Durability is achieved through semi-synchronous replication, ensuring data is not lost even if a node fails 4.
Related Episodes

SE Radio 560: Sugu Sougoumarane on Distributed SQL Databases
Answers 383 questions

364: Peter Zaitsev on Choosing the Right Open Source Database
Answers 383 questions

SE-Radio Episode 344: Pat Helland on Web Scale
Answers 383 questions

Episode 185: Dwight Merriman on Replication
Answers 383 questions

Episode 413: Spencer Kimball on CockroachDB
Answers 383 questions

Episode 189: Eric Lubow on Polyglot Persistence
Answers 383 questions

Episode 511: Ant Wilson on Supabase (Postgres as a Service)
Answers 383 questions

Episode 544: Ganesh Datta on DevOps vs Site Reliability Engineering
Answers 383 questions

Episode 519: Kumar Ramaiyer on Building a SaaS
Answers 383 questions

Episode 179: Cassandra with Jonathan Ellis
Answers 383 questions

Episode 504: Frank McSherry on Materialize
Answers 383 questions

Episode 194: Michael Hunger on Graph Databases
Answers 383 questions

Episode 165: NoSQL and MongoDB with Dwight Merriman
Answers 383 questions

Episode 495: Vaughn Vernon on Strategic Monoliths and Microservices
Answers 383 questions
Episode 417: Alex Petrov on Database Storage Engines
Answers 383 questions














