返回顶部
M

MariaDB

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

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
887
下载量
2
收藏
概述
安装方式
版本历史

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`

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 mariadb-1776420071 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 mariadb-1776420071 技能

通过命令行安装

skillhub install mariadb-1776420071

下载 Zip 包

⬇ 下载 MariaDB v1.0.0

文件大小: 2.73 KB | 发布时间: 2026-4-17 18:33

v1.0.0 最新 2026-4-17 18:33
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部