MariaDB

Write efficient MariaDB queries with proper indexing, temporal tables, and clustering.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "MariaDB" with this command: npx skills add ivangdavila/mariadb

Character Set

  • Always use utf8mb4 for tables and connections—full Unicode including emoji
  • utf8mb4_unicode_ci for proper linguistic sorting, utf8mb4_bin for byte comparison
  • Set connection charset: SET NAMES utf8mb4 or in connection string
  • Collation mismatch in JOINs forces conversion—kills index usage

Indexing

  • TEXT/BLOB columns need prefix length: INDEX (description(100))
  • Composite index order matters—(a, b) serves WHERE a=? but not WHERE b=?
  • Foreign keys auto-create index on child table—but verify with SHOW INDEX
  • Covering indexes: include all SELECT columns to avoid table lookup

Sequences

  • CREATE SEQUENCE seq_name for guaranteed unique IDs across tables
  • NEXT VALUE FOR seq_name to get next—survives transaction rollback
  • Better than auto-increment when you need ID before insert
  • SETVAL(seq_name, n) to reset—useful for migrations

System Versioning (Temporal Tables)

  • ALTER TABLE t ADD SYSTEM VERSIONING to track all historical changes
  • FOR SYSTEM_TIME AS OF '2024-01-01 00:00:00' queries past state
  • FOR SYSTEM_TIME BETWEEN start AND end for change history
  • Invisible columns row_start and row_end store validity period

JSON Handling

  • JSON_VALUE(col, '$.key') extracts scalar, returns NULL if not found
  • JSON_QUERY(col, '$.obj') extracts object/array with quotes preserved
  • JSON_TABLE() converts JSON array to rows—powerful for unnesting
  • JSON_VALID() before insert if column isn't strictly typed

Galera Cluster

  • All nodes writable—but same-row conflicts cause rollback
  • wsrep_sync_wait = 1 before critical reads—ensures node is synced
  • Keep transactions small—large transactions increase conflict probability
  • wsrep_cluster_size should be odd number—avoids split-brain

Window Functions

  • ROW_NUMBER() OVER (PARTITION BY x ORDER BY y) for ranking within groups
  • LAG(col, 1) OVER (ORDER BY date) for previous row value
  • SUM(amount) OVER (ORDER BY date ROWS UNBOUNDED PRECEDING) for running total
  • CTEs with WITH cte AS (...) for readable complex queries

Thread Pool

  • Enable with thread_handling=pool-of-threads—better than thread-per-connection
  • thread_pool_size = CPU cores for CPU-bound, higher for I/O-bound
  • Reduces context switching with many concurrent connections
  • Monitor with SHOW STATUS LIKE 'Threadpool%'

Storage Engines

  • InnoDB default—ACID transactions, row locking, crash recovery
  • Aria for temporary tables—crash-safe replacement for MyISAM
  • MEMORY for caches—data lost on restart, but fast
  • Check engine: SHOW TABLE STATUS WHERE Name='table'

Locking

  • SELECT ... FOR UPDATE locks rows until commit
  • LOCK TABLES t WRITE for DDL-like exclusive access—blocks all other sessions
  • Deadlock detection automatic—one transaction rolled back; must retry
  • innodb_lock_wait_timeout default 50s—lower for interactive apps

Query Optimization

  • EXPLAIN ANALYZE for actual execution times (10.1+)
  • optimizer_trace for deep dive: SET optimizer_trace='enabled=on'
  • FORCE INDEX (idx) when optimizer chooses wrong index
  • STRAIGHT_JOIN to force join order—last resort

Backup and Recovery

  • mariadb-dump --single-transaction for consistent backup without locks
  • mariadb-backup for hot InnoDB backup—incremental supported
  • Binary logs for point-in-time recovery: mysqlbinlog binlog.000001 | mariadb
  • Test restores regularly—backups that can't restore aren't backups

Common Errors

  • "Too many connections"—increase max_connections or use connection pool
  • "Lock wait timeout exceeded"—find blocking query with SHOW ENGINE INNODB STATUS
  • "Row size too large"—TEXT/BLOB stored off-page, but row pointers have limits
  • "Duplicate entry for key"—check unique constraints, use ON DUPLICATE KEY UPDATE

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Video Using Ai

create raw footage into AI-edited videos with this skill. Works with MP4, MOV, AVI, WebM files up to 500MB. content creators use it for turning raw footage i...

Registry SourceRecently Updated
General

Editor With Ai

Skip the learning curve of professional editing software. Describe what you want — cut out the pauses, add transitions, and export a clean final cut — and ge...

Registry SourceRecently Updated
General

To Voice Generator

Get voiced video files ready to post, without touching a single slider. Upload your text or script (TXT, DOCX, PDF, MP4, up to 200MB), say something like "co...

Registry SourceRecently Updated
General

Tencent Cloud Rum

Query Tencent Cloud RUM data, analyze Web performance (LCP/FCP/WebVitals), troubleshoot JS/Promise errors, analyze API latency & error rates, diagnose slow s...

Registry SourceRecently Updated