怎么创建网站免费建立个人网站,90平方装修全包价格,湛江网站建设工作,长沙seo服务哪个公司好一、MySQL深度优化 索引优化 B树索引结构 结构特点#xff1a; 平衡多路搜索树#xff0c;所有数据存储在叶子节点#xff0c;非叶子节点仅存键值和指针。叶子节点通过双向链表连接#xff0c;支持范围查询高效遍历。 优势#xff1a; 减少磁盘IO#xff08;高扇出#…一、MySQL深度优化 索引优化 B树索引结构 结构特点 平衡多路搜索树所有数据存储在叶子节点非叶子节点仅存键值和指针。叶子节点通过双向链表连接支持范围查询高效遍历。 优势 减少磁盘IO高扇出3~4层可存储千万级数据。适合范围查询如WHERE id BETWEEN 100 AND 200。 覆盖索引 定义索引包含查询所需的所有字段无需回表。示例 -- 创建覆盖索引
CREATE INDEX idx_cover ON user(name, age);
-- 查询命中覆盖索引
SELECT name, age FROM user WHERE name Alice; 索引下推ICP 原理在存储引擎层过滤数据减少回表次数。触发条件 查询条件包含索引列和非索引列。需在WHERE子句中使用索引前缀。 查看ICP优化 EXPLAIN SELECT * FROM user WHERE name Alice AND age 20; -- Extra列显示Using index condition 锁机制 意向锁Intention Locks 作用快速判断表中是否存在行级锁避免全表扫描。类型 意向共享锁IS事务准备加行级共享锁。意向排他锁IX事务准备加行级排他锁。 间隙锁Gap Locks 功能锁定索引记录间的间隙防止幻读Phantom Read。示例 -- 对id范围(5,10)加间隙锁
SELECT * FROM user WHERE id 5 AND id 10 FOR UPDATE; 死锁排查 步骤 执行SHOW ENGINE INNODB STATUS查看LATEST DETECTED DEADLOCK。分析WAITING FOR THIS LOCK和HOLDS THE LOCK信息。 解决 调整事务顺序缩短事务时间。使用innodb_deadlock_detect ON默认开启自动检测。 分库分表 ShardingSphere分片策略 取模分片user_id % 4数据均匀分布但扩容需迁移数据。范围分片按时间或ID范围分片易导致数据倾斜。基因法路由 原理将关联数据如订单和订单明细的基因值如用户ID哈希嵌入分片键确保关联查询在同一分片。示例 -- 订单表分片键 user_id % 8
-- 订单明细表分片键 (order_id的基因部分) % 8 二、大数据存储优化 HBase LSM树结构 写入流程 数据先写入内存MemStore。MemStore满后刷写到磁盘HFile。后台合并CompactionHFile减少文件数。 优势高吞吐写入适合时序数据。 Region分裂机制 触发条件Region大小超过阈值默认10GB。分裂策略 IncreasingToUpperBound动态调整分裂阈值。Disabled手动控制分裂。 RowKey设计 原则 散列化避免热点如MD5(user_id).substr(0,4) user_id。有序性时间戳反转Long.MAX_VALUE - timestamp。 示例 RowKey 盐值4位 用户ID 时间戳反转 Elasticsearch 倒排索引 结构词项Term → 文档ID列表。优化 使用keyword类型避免分词开销。合并段Force Merge减少查询时的段数量。 分词器原理 标准分词器按空格和标点切分过滤停用词。IK分词器 ik_smart粗粒度切分如“清华大学” → “清华大学”。ik_max_word细粒度切分如“清华大学” → “清华”,“大学”。 自定义词典 PUT /my_index
{settings: {analysis: {analyzer: {my_ik: {type: custom,tokenizer: ik_max_word,filter: [my_stopwords]}},filter: {my_stopwords: {type: stop,stopwords: [的, 是]}}}}
}DSL优化技巧 避免深分页使用search_after代替from/size。过滤器上下文将term查询放入filter利用缓存。冷热数据分离按时间范围分索引热数据使用SSD存储。 GET /logs-2023/_search
{query: {bool: {filter: [{ range: { timestamp: { gte: now-1d/d }}}]}},sort: [{timestamp: desc}],size: 10,search_after: [1698765432000]
}三、总结与实战建议 MySQL优化重点 索引设计遵循最左前缀原则避免冗余索引。分库分表优先考虑基因法路由减少跨分片查询。 HBase核心实践 RowKey设计需平衡散列与查询需求。预分区Pre-split避免自动分裂带来的性能波动。 Elasticsearch调优 使用_bulk接口批量写入提升吞吐量。定期清理旧索引结合ILM索引生命周期管理自动化。
通过结合业务场景选择合适的存储方案并持续监控关键指标如MySQL的QPS、Elasticsearch的段合并频率可显著提升系统性能和稳定性。