# I was reading about Read Uncommitted

## Speaking

### Dialog

**Leo:** Hey Antonio, can I ask you something about `database isolation levels`?

**Antonio:** Sure, Leo. What are you trying to understand?

**Leo:** I was reading about `Read Uncommitted`, and it says a transaction can read data written by another transaction that hasn’t committed yet. That sounds dangerous. How does that work?

**Antonio:** Good question. At the **Read Uncommitted** level, the database does not `prevent one transaction from` seeing changes made by another transaction before those changes are finalized.

**Leo:** So basically… I can see someone else’s `unfinished work?`

**Antonio:** Exactly. Think of it like someone editing a document while you’re reading it. You might see a version that never actually becomes the final one.

**Leo:** That sounds messy. What’s the problem called again?

**Antonio:** That situation is called a `dirty read`.

**Leo:** Why “dirty”?

**Antonio:** Because the data you read might not be valid. Imagine this scenario.

**Antonio:** Transaction A starts updating a bank account `balance` from 100 to 0. Now Transaction B reads that same `row`.

**Leo:** So Transaction B thinks the `balance` is zero.

**Antonio:** Right. But then Transaction A `rolls back the change`.

**Leo:** Wait… so the balance goes back to 100?

**Antonio:** Exactly. Which means Transaction B just read a value that never actually existed in the final database state.

**Leo:** Ah, I see. That’s why the read is “dirty.” It read something temporary.

**Antonio:** Correct. That’s why most databases don’t even allow `Read Uncommitted` in practice, or they internally treat it as something safer.

**Leo:** So when would anyone use it?

**Antonio:** Almost never in systems where correctness matters. It might appear in analytics or scenarios where speed `matters more than` accuracy, but it’s generally `avoided`.

**Leo:** Makes sense. I definitely wouldn’t want dirty reads in something like a payment system.

**Antonio:** Exactly. In financial systems, dirty reads could cause serious inconsistencies.

* * *

### Vocabulary

\[database isolation levels, **Read Uncommitted,** dirty read, row, rolls back the change, avoided, balance, prevent from, unfinished work, matters more than\]

| Word / Expression | Meaning | Example Sentence |
| --- | --- | --- |

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>database isolation levels</strong></p></td><td colspan="1" rowspan="1"><p>Rules that define how transactions interact with each other when they run at the same time in a database.</p></td><td colspan="1" rowspan="1"><p>Different <strong>database isolation levels</strong> control how much transactions can see each other's data.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>Read Uncommitted</strong></p></td><td colspan="1" rowspan="1"><p>The lowest isolation level where a transaction can read changes made by another transaction even if they are not committed yet.</p></td><td colspan="1" rowspan="1"><p>At <strong>Read Uncommitted</strong>, one transaction can read temporary data from another transaction.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>dirty read</strong></p></td><td colspan="1" rowspan="1"><p>When a transaction reads data that was modified by another transaction but not committed yet.</p></td><td colspan="1" rowspan="1"><p>A <strong>dirty read</strong> happens if a transaction reads a value that may later be rolled back.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>row</strong></p></td><td colspan="1" rowspan="1"><p>A single record in a database table.</p></td><td colspan="1" rowspan="1"><p>The query updated one <strong>row</strong> in the accounts table.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>rolls back the change</strong></p></td><td colspan="1" rowspan="1"><p>Cancels a transaction and returns the data to its previous state.</p></td><td colspan="1" rowspan="1"><p>If the transaction fails, the database <strong>rolls back the change</strong>.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>avoided</strong></p></td><td colspan="1" rowspan="1"><p>Something intentionally not used or prevented.</p></td><td colspan="1" rowspan="1"><p>Dirty reads are usually <strong>avoided</strong> in financial systems.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>balance</strong></p></td><td colspan="1" rowspan="1"><p>The amount of money available in an account.</p></td><td colspan="1" rowspan="1"><p>The customer checked the <strong>balance</strong> of the account.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>prevent from</strong></p></td><td colspan="1" rowspan="1"><p>To stop something from happening.</p></td><td colspan="1" rowspan="1"><p>Strong isolation levels <strong>prevent transactions from</strong> reading invalid data.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>unfinished work</strong></p></td><td colspan="1" rowspan="1"><p>Work that has started but has not been completed yet.</p></td><td colspan="1" rowspan="1"><p>Reading uncommitted data is like seeing someone's <strong>unfinished work</strong>.</p></td></tr></tbody></table>

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>matters more than</strong></p></td><td colspan="1" rowspan="1"><p>To be more important than something else.</p></td><td colspan="1" rowspan="1"><p>In some analytics systems, speed <strong>matters more than</strong> perfect consistency.</p></td></tr></tbody></table>

* * *

## Exercises

### Reading comprehension

1.  Why does Leo think **Read Uncommitted** is dangerous?
    
2.  How does Antonio explain the idea of **unfinished work** using a real-life example?
    
3.  What is a **dirty read**, and why can it cause problems in a system?
    
4.  In the bank account example, what happens after Transaction A **rolls back the change**, and why is that important?
    
5.  According to Antonio, in what kind of scenarios might Read Uncommitted be used, and why?
    

* * *

### Fill-in-the-Blanks

Fill in each blank with the correct word or expression from the vocabulary list.

1.  Different \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ help control how transactions interact in a database.
    
2.  \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ is the lowest isolation level and allows transactions to see uncommitted data.
    
3.  A \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ happens when a transaction reads data that might later be undone.
    
4.  Each record in a table is called a \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_.
    
5.  If something goes wrong, the system \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ to restore the previous state.
    
6.  In financial systems, risky behaviors like dirty reads are usually \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_.
    
7.  The account \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ showed 100 dollars before the update.
    
8.  Strong isolation levels \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ transactions \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ reading invalid data.
    
9.  Reading uncommitted data is like looking at someone’s \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_.
    
10.  In some systems, speed \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ accuracy.
     

* * *

## **Challenge Section**

### **Story telling**

Storytelling is the art of communicating ideas, emotions, or messages through a story instead of just giving information.

Include the words provided in the vocabulary section.

* * *

### **Role play**

For this exercise, you will practice using the vocabulary related to this dialog by acting out a role-play scenario.

Include the words provided in the vocabulary section.

* * *

### **Produce**

Create Your Own Dialog

Instructions:  
Using the new words/expressions you’ve learned.

* * *

### **Personal experience**

Talk about your past experience with the topic.

* * *

## **Done**
