10 2024 档案
摘要:查询语句执行性能 explain 查看优化器选择的索引 explain select * from t where a between 10000 and 20000 慢日志查询语句执行时间和扫描行数 set long_query_time=0; select * from t where a be
阅读全文
摘要:InnoDB 有两种读取数据的方式 快照读/一致性读,MVCC 当前读,获取读写锁后读取行的最新数据 InnoDB 用一致性读视图实现了 MVCC,用于支持读已提交和可重复读隔离级别的实现。 启动事务时立即创建视图 start transaction with consistent snapshot
阅读全文
摘要:普通索引和唯一索引性能差别 查询性能 在 InnoDB 中,每个数据页的大小默认是 16KB。 查询性能差别不大。 更新性能 change buffer:当需要更新一个数据页时,如果数据页在内存中就直接更新;如果数据页不在内存中,在不影响数据一致性的前提下, InnoDB 会将这些更新操作缓存在 c
阅读全文
摘要:InnoDB 和 MyISAM 对比 Innodb 支持崩溃恢复 InnoDB 支持事务 InnoDB 支持行锁 B+Tree 叶子节点存储内容不同 MyISAM 记录表行总数,InnoDB 没有 两阶段锁 InnoDB 读操作会使用 MVCC,而写操作会使用写锁。 InnoDB 两阶段锁协议:行锁
阅读全文
摘要:MySQL 的锁可以分为全局表、表级表和行锁三类。 全局锁 加全局读锁,整个数据库处于只读状态,可以用于数据库备份 flush tables with read lock 利用重复读隔离级别,可以避免加全局锁 mysqldump --single-transaction 不推荐使用 set glob
阅读全文
摘要:索引是让提高数据查询效率的数据结构。(避免全表扫描) 索引的实现方式:哈希索引、B+Tree 树、倒排索引。 InnoDB B+Tree 的叶子节点指向主键id或存储数据行;MyISAM 的叶子节点指向数据行的内存地址 MySQL 索引的最左前缀原则 索引常见模型 索引常见模型:有序数组、跳表、哈希
阅读全文
摘要:事务保证一组操作要么全部成功,要么全部失败。 在 MySQL 中事务是在引擎层实现的。 隔离性和隔离级别 事务的四大特性(ACID):原子性、一致性、隔离性、持久性 事务隔离级别:读未提交、读已提交、可重复读、串行化 当数据库有多个事务同时执行的时候,可能会出现丢失更新、脏读、不可重复读、幻读 在实
阅读全文
摘要:liaozibo.com Elasticsearch Elasticsearch 安装 Elasticsearch 基础入门 Elasticsearch 结构化搜索 Elasticsearch 全文搜索 Elasticsearch 多字段搜索 Elasticsearch 近似搜索/短语搜索 Elas
阅读全文
摘要:MySQL 日志系统:一条SQL更新语句是如何执行的 WAL:先写日志,再写磁盘(顺序写代替随机写,提高性能) 两阶段提交:保证 redo log 和 binlog 一致性 MySQL 三种日志 SQL更新语句和SQL查询语句一样要经过各功能模块的处理,区别是更新语句涉及写日志(binlog、red
阅读全文
摘要:MySQL 基础架构:一条SQL查询语句如何执行 连接器(管理连接、权限验证) 查询缓存(5.7不推荐使用,8.0完全废弃) 解析器(解析树) 优化器(索引选择、表关联顺序、执行计划) 执行器(调用存储引擎接口) 执行引擎(InnoDB、MyISAM、Memory) MySQL 分成Server层和
阅读全文
摘要:查询集群文档数量 查询集群文档数量 curl -XGET -k -u elastic:passwd -H 'Content-Type: application/json' 'https://localhost:9200/_count?pretty' curl -i 显示响应头信息 curl -XGE
阅读全文
摘要:Elasticsearch权威指南 启动 docker ubuntu docker run -it -d -p 22:22 --name ubuntu_dev ubuntu docker exec -it ubuntu_dev bash 安装工具 apt update apt install -y
阅读全文
摘要:镜像 Linux 镜像 Ubuntu Alpine Busybox 搭建 Linux 环境 docker run -it -d -p 22:22 --name ubuntu_dev ubuntu docker ps -a docker exec -it ubuntu_dev bash
阅读全文
摘要:美团数据库高可用架构的演进与设想 MMM (Multi-Master Replication Manager for MySQL) Google 开源MySQL高可用组件(废弃) MHA(MySQL Master High Availability)Facebook 工程师开源的MySQL高可用组件
阅读全文
摘要:过滤器 当进行精确查找时,我们会使用过滤器。 term 单值匹配 terms 多值匹配 bool 复合过滤器(must/must_not/should) range 范围查询 (gt/lt/gtq/lte) exists null值查询 使用 constant_score 以非评分模式进行查询。 示
阅读全文
摘要:全文搜索 match operator 提高精度 minimum_should_match 控制精度 bool 组合查询 must 必须匹配 must_not 必须不匹配 should 如果有 must 则表示没有必须匹配但有会更匹配,如果没有 must 则表示至少需要有一个匹配 minimum_s
阅读全文