11. slow reads ?
poor use of indices
during large write transactions
http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-transaction-management.html
http://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_covering_index
12
13. digging & deeper
SHOW ENGINE INNODB STATUS '
---TRANSACTION 72C, ACTIVE 755 sec
4 lock struct(s), …, 3 row lock(s), undo log entries 12
TABLE LOCK …
RECORD LOCKS …
RECORD LOCKS … locks rec but not gap
RECORD LOCKS … lock_mode X locks gap before rec
http://www.mysqlperformanceblog.com/2012/03/27/innodbs-gap-locks/
http://dev.mysql.com/doc/refman/5.1/en/innodb-monitors.html
14
30. syncing: schema
lazily (no migrations) :
- create missing /.*_[01]/ tables
- compare schemas with
SHOW CREATE TABLE
read
availabilities_front
swap
availabilities_back
read/write
copy
availabilities
31
31. syncing: bulk
- run TRUNCATE TABLE then
INSERT INTO … SELECT FROM
- too slow at runtime
(only for setup / after migrations)
read
availabilities_front
swap
availabilities_back
read/write
copy
availabilities
32
32. syncing: deltas
- deletions :
SELECT id … LEFT JOIN …
DELETE … WHERE id IN …
- insertions & updates :
read
REPLACE INTO … row_touched_at > X
availabilities_front
swap
- remember last sync in data_tiering_sync_logs
availabilities_back
- row_touched_at “magic”
copy
read/write
TIMESTAMP columnavailabilities
33