Clarify required transaction isolation level
Clarify required transaction isolation level

The default transaction isolation level in Postgres is "Read Committed". Unless I'm mistaken, this opens up a race condition between the following two statements:

```ruby
job_batch = StagedJobs.order('id').limit(1000)
```
```ruby
StagedJobs.where('id <= ?', job_batch.last).delete
```

I.e. with `read commited` the following race might happen:

```
TX1: begin
TX2: begin
TX1: insert job 1
TX2: insert job 2
TX2: commit
ENQUEUER: SELECT * FROM jobs ... (returns job 2, but not job 1)
TX1: commit (makes job 1 visible to enqueuer)
ENQUEUER: DELETE FROM jobs WHERE id < 2 (deletes job 1 and 2, even so job 1 wasn't processed)
```

Let me know if that makes sense or if I'm confused :).

Otherwise thank you so much for this great article, as well as all the others you've written.
Former-commit-id: 2540784ce5b395da00f02e38cef3c053d78ab572
brandur/sorg,brandur/sorg,brandur/sorg,brandur/sorg,brandur/sorg