🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Database

by @ivangdavila

Design and operate databases avoiding common scaling, reliability, and data integrity traps.

Versionv1.0.0
Downloads2,547
Installs20
Stars⭐ 3
TERMINAL
clawhub install db

πŸ“– About This Skill


name: Database description: Design and operate databases avoiding common scaling, reliability, and data integrity traps. metadata: {"clawdbot":{"emoji":"πŸ—ƒοΈ","os":["linux","darwin","win32"]}}

Database Gotchas

Connection Traps

  • Connection pools exhausted = app hangs silently β€” set max connections, monitor pool usage
  • Each Lambda/serverless invocation may open new connection β€” use connection pooling proxy (RDS Proxy, PgBouncer)
  • Connections left open block schema changes β€” ALTER TABLE waits for all transactions
  • Idle connections consume memory β€” set connection timeout, kill idle connections
  • Transaction Gotchas

  • Long transactions hold locks and bloat MVCC β€” keep transactions short
  • Read-only transactions still take snapshots β€” can block vacuum/cleanup in Postgres
  • Implicit autocommit varies by database β€” explicit BEGIN/COMMIT is safer
  • Deadlocks from inconsistent lock ordering β€” always lock tables/rows in same order
  • Lost updates from read-modify-write without locking β€” use SELECT FOR UPDATE or optimistic locking
  • Schema Changes

  • Adding column with default rewrites entire table in old MySQL/Postgres β€” use NULL default, backfill, then alter
  • Index creation locks writes in some databases β€” use CONCURRENTLY in Postgres, ONLINE in MySQL 8+
  • Renaming column breaks running application β€” add new column, migrate, drop old
  • Dropping column with active queries causes errors β€” deploy code change first, then schema change
  • Foreign key checks slow bulk inserts β€” disable constraints, insert, re-enable
  • Backup and Recovery

  • Logical backups (pg_dump, mysqldump) lock tables or miss concurrent writes β€” use consistent snapshot
  • Point-in-time recovery requires WAL/binlog retention β€” configure before you need it
  • Backup verification: restore regularly β€” backups that can't restore aren't backups
  • Replication lag during backup can cause inconsistency β€” backup from replica, verify consistency
  • Replication Traps

  • Replication lag means stale reads β€” check lag before trusting replica data
  • Writes to replica corrupt replication β€” make replicas read-only
  • Schema changes can break replication β€” replicate schema changes, don't apply separately
  • Split-brain after failover loses writes β€” use fencing/STONITH to prevent
  • Promoting replica doesn't redirect connections β€” application must reconnect to new primary
  • Query Patterns

  • N+1 queries from ORM lazy loading β€” eager load relationships or batch queries
  • Missing indexes on foreign keys slows joins and cascading deletes
  • Large IN clauses become slow β€” batch into multiple queries or use temp table
  • COUNT(*) on large tables is slow β€” use approximate counts or cache
  • SELECT without LIMIT on unbounded data risks OOM
  • Data Integrity

  • Application-level unique checks have race conditions β€” use database constraints
  • Check constraints often disabled for "flexibility" then data corrupts β€” keep them on
  • Orphan rows from missing foreign keys β€” add constraints retroactively, clean up first
  • Timezone confusion: store UTC, convert on display β€” never store local time without zone
  • Floating point for money causes rounding errors β€” use DECIMAL or integer cents
  • Scaling Limits

  • Single table over 100M rows needs sharding strategy β€” plan before you hit it
  • Autovacuum falling behind causes table bloat β€” monitor dead tuple ratio
  • Query planner statistics stale after bulk changes β€” ANALYZE after large imports
  • Connection count doesn't scale linearly β€” more connections = more lock contention
  • Disk IOPS often bottleneck before CPU β€” monitor I/O wait