摘要:
liaozibo.com Elasticsearch Elasticsearch 安装 Elasticsearch 基础入门 Elasticsearch 结构化搜索 Elasticsearch 全文搜索 Elasticsearch 多字段搜索 Elasticsearch 近似搜索/短语搜索 Elas 阅读全文
摘要:
当内存数据页跟磁盘数据页内容不一致的时,称这个内存页为“脏页”。内存数据写入磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。 平时执行很快的更新操作,就是在写内存和日志,而MySQL偶尔抖一下,可能是在刷脏页。 刷脏页的时机 redo log 写满了,数据库停止所有更新操作,将 chec 阅读全文
摘要:
前缀索引 创建前缀索引 alter table t add index idx_email(email); alter table t add index idx_email(email(6)); 使用前缀索引,定义好长度,可以做到即节省空间,又不用额外增加太多查询成本。 区分度 建立索引时,区分度 阅读全文
摘要:
查询语句执行性能 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):原子性、一致性、隔离性、持久性 事务隔离级别:读未提交、读已提交、可重复读、串行化 当数据库有多个事务同时执行的时候,可能会出现丢失更新、脏读、不可重复读、幻读 在实 阅读全文