MySQL索引

对于数据库索引,我们的第一反应就是,让查询变得更快。
为什么会快,当你进行一条数据查询的时候,没有索引的帮助,你只能从头查起,一行一行遍历,直到符合条件为止。索引就像书的目录,你可以通过它,快速定位到你要的章节,从而快速许多。

数据库索引常见数据结构有:

  • 哈希表

阅读全文

关于proxy_set_header的注意点

proxy_set_header的使用

在Nginx中,proxy_set_header可以让我们对请求中的头部进行重定义、或者是增加请求头,再一并发送给被代理的服务器。

阅读全文

Socket.io部署在k8s时,出现ws建立失败的问题

症状

当我们将基于Socket.io的程序放到生产环境运行时,往往不止部署一个节点,或者是一个节点不止部署一份副本,这个时候,本来正常运行的程序,却在与客户端建立链接时出现了问题:

1
2
Http状态码为400body为:
{"code":1,"message":"Session ID unknown"}

阅读全文

解决Nginx不支持if块嵌套proxy_set_header

有时候我们想在Nginx的配置上加上一些判断,假如条件为真,那么就怎么样。比如:

1
2
3
4
5
6
7
location / {
if ($http_referer ~ "http[s]?\:\/\/\w*\.?keepmoving.*") {
# do something
# proxy_set_header Host "test.host";
}
proxy_pass http://your.service;
}

阅读全文

使用X-Accel-Redirect让Nginx做内部重定向

有时候我们有对请求拦截的需求,比如做log、做权限校验等等,那X-Accel-Redirect可以让Nginx帮我们做到。
比如我们可以有一个项目专门负责权限处理,请求过来后,只有符合权限的,才会被转发到真实地址。

或者是我们想配置Nginx作为下载服务器,但是真实地址不想被外部知道,也可以使用X-Accel。

阅读全文

k8s每节点相同服务只部署一个进程

利用Pod反亲和性,可以做到相同服务在每个节点只部署一份进程。

Pod间的亲和性和反亲和性(affinity and anti-affinity)

    阅读全文

    MySQL的事务隔离

    有时候我们要确保几个操作是原子操作,就需要使用到事务,比如转账行为。
    在MySQL中,事务是在引擎层支持的。但不是所有的引擎都支持事务,原生的MyISAM就不支持事务,所以也是被InnoDB所取代的一个原因。

    隔离性与隔离级别

    事务的ACID特性中的I(Isolation),是指隔离性,当数据库有多个事务同事执行时,可能会出现下面几个问题:

    阅读全文

    MySQL的SQL更新语句是怎么执行的

    执行流程

    SQL的更新跟查询一样,会走同一套流程,即:

    1
    「连接器」->「分析器」->「优化器」->「执行器」

    阅读全文

    MySQL的SQL查询语句是怎么执行的

    在MySQL里,一条查询语句,会经过:

    1
    「连接器」->「分析器」->「优化器」->「执行器」

    阅读全文

    关于Kubernetes的一点简单记录

    可用性问题

    Pod如何做健康检测(liveness探针)

    k8s提供了liveness probe功能,用于检测pod情况。

    阅读全文