杨 发布的文章

哨兵系统会监控主从服务器,当检测到下线时长超过用户设定时长上限时,会进行故障转移操作:

  • 选择一个从服务器作为主服务器
  • 然后对其他所有从服务器发送新的复制指令,让它们成为新的主服务器的从服务器,当所有从服务器都开始复制新的主服务器时,故障转移操作完毕
  • 另外,哨兵还会继续监视已下线的服务器,并在它重新上线时,将它设置为新的主服务器的从服务器。

- 阅读剩余部分 -

2.8版本前后复制原理有所不同,2.8之前称为旧版,2.8后称为新版。

旧版复制实现原理

redis的复制操作分为同步(sync)和命令传播(command propagate) 两个操作:

  • 同步操作用于将从服务器状态更新为主服务器当前所处的服务器状态
  • 命令传播操作则用于当主服务器状态被修改,导致主从状态不一致时,让主从状态恢复到一致状态。

- 阅读剩余部分 -

新加4个标量类型声明

php7之前已经存在的函数参数类型有:class,self,array,callable
php7之后新加入的有:bool,float,int,string,object


- 阅读剩余部分 -

ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,不支持事务和外键,表级锁,空间压缩,全文索引,select,insert多场景适用。好处是减少磁盘空间,减少磁盘I/O,提升查询性能。
Innodb:支持事务、行级锁、外键,表基于聚簇索引建立,主键查询性能高,InnoDB内部优化,磁盘读取数据的可预测读取,在内存自动创建hash索引来加速读操作的自适应hash索引,加速插入操作的插入缓冲区。 热备份,是其他引擎不具备的。(innodb 5.6版本起支持英文的全文索引,5.7.6支持中日韩的全文索引。)



行级锁

InnoDB的行级锁分为两种类型,共享锁和排他锁。
共享锁(S Lock):允许事务读一条数据
排它锁(X Lock):允许事务删除或跟新一条数据
锁兼容:只有两个共享锁

innodb默认情况下对select操作使用一致性非锁定读。
但是某些情况下,需要对select显示加锁
共享锁(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE
排他锁(X):SELECT * FROM table_name WHERE ... FOR UPDATE

全文索引

简介
  1).MySQL中的全文索引是FultLeXT类型的索引。
  2).全文索引只能用于InnoDB或MyISAM表,只能为CHAR、VARCHAR、TEXT列创建。
  3).在MySQL 5.7.6中,MySQL提供了支持中文、日文和韩文(CJK)的内置全文ngram解析器,以及用于日文的可安装MeCab全文解析器插件
  4).当创建表时,可以在CREATE TABLE语句中给出FULLTEXT索引定义,或者稍后使用ALTER TABLE或CREATE INDEX添加该定义。
  5).对于大型数据集,将数据加载到没有FULLTEXT索引的表中然后创建索引要比将数据加载到具有现有FULLTEXT索引的表中快得多。

全文索引的三种类型

  1. 自然语言搜索将搜索字符串解释为自然语言中短语。
  2. 布尔全文搜索
  3. 查询扩展搜索

数据结构: 倒排索引

倒排索引