笔记02

Reading time ~1 minute

水平分表

优点:减少单表记录行数,加快查询速度

缺点:增加了代码维护难度( 代码需要修改 )

分区技术

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT NOT NULL,
    store_id INT NOT NULL
)

PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN (21)
);




select id from employees where store_id = 4;//p0
从小的文件中搜索内容要比大文件要快

//partition by range (范围)



MYI  以.myi是存放索引
MYD  以.myd存放数据

FRM   存放表定义、表结构

只要一个表有三个文件,这个表的引擎一定是myisam

主从、分表、分区技术

CDN( 内容分发网络 )

通过在网络各处(网络节点)放置服务器,将静态资源缓存在离用户最近的地方,使用户以最快速度获取数据。


CDN放置的是静态资源:CSS、JS、图片、视频、字体





服务器在北京   但是在广州有CDN服务器。在上海也有CDn

广州用户要数据( 数据库数据、网页数据、样式 )

上海用户要数据( 静态数据去上海 )

就近原则。

CDN : 使用第三方提供。 百度、阿里、七牛

反向代理服务器

反向代理就是一个缓存。



如果反向代理服务器有用户要的数据,那么直接由反向代理服务器直接返回给用户。不需要再访问我们服务器集群。


如果反向代理服务器没有用户要的数据,那么就由反向代理服务器
代理我们用户去访问我们服务器集群。拿到数据,先在反向代理服务器
保存一份,然后再给到用户。


反向代理服务器:Nginx  /   Squid  

文件服务器

TFS (淘宝文件系统)  分布式的文件系统,

但是TFS比较适用于类似淘宝商城。( 小文件比较多的情况 )


GFS(谷歌文件系统)

站内搜索

站内搜索大型网站一定不能使用。因为like会导致一个全表扫描。

就是一个表如果有1000万行数据,那么like就扫描1000万数据。



站内搜索使用:sphinx(斯芬克司)、但是sphinx不支持中文。

coreseek、xunsearch(建议使用这个。因为这是国产,中文文档多 )

建议:研究xunsearch,然后把它用到你的项目中。

不能现在就停。

NoSQL( 非关系型数据库 )

与mysql不同点:NoSQL的数据存放内存里面去。

NoSQL产品: Redis /  MongoDb  / Hbase

百度:产品:搜索、地图、百科、贴吧

    搜索有专门的服务器集群
    地图有服务器
    贴吧服务器

    这样做的好处: 1、 容易维护  2、 提高系统速度

经营自己的项目

好处:可以用自己的感兴趣的所有技术。

谷歌技术。每年有一些分享会议。

谷歌 IO大会。 谷歌还会公布他一些技术。

IDE(集成开发环境)

PHP: phpstorm zendStudio

消息队列(让你的请求在排队)

队列:先进先出。

函数:array_push() 尾部进去  array_pop()  头部出来

总结:

1. 架构:  CDN、 反向代理服务器( Nginx/Squid )

负载均衡器( LVS/F5 ) =》  应用服务器

数据库( 读写分离、分布式数据库 )   非关系型数据库(  Redis MongoDb)

缓存( Memcache  File )    搜索引擎( sphinx  xunsearch )

消息队列    文件服务器( TFS /  GFS )  

=================

数据库读写分离

原理:从库复制主数据库的bin-log日志。然后 到从库执行。

主库:88 从库:168

168到88上面拿东西bin-log。

主库(88)给从库(168)授权

查看bin-log日志

bin-log作用:1、使用bin-log作数据恢复 2、利用bin-log作主从配置

利用bin-log做数据恢复

user
id  name
1    jack
2    mary

晚上00:00  做了一个备份  mysql.sql


晚上01:00  有一个新用户注册了  rose


user
id  name
1    jack
2    mary
3    rose


早上8:00时候数据库被攻击,导致数据丢失



数据恢复:mysql.sql  没有rose  

如何完整?

主从数据库优点

  1. 读写分离,减轻单个数据库压力
  2. 提高查询速度。
  3. 从库起到一个备份的作用。 提高系统可靠性、稳定性。

缺点: 1. 当并发量大的时候,实时性不高。

例子:微博。微博特点:实时性要求很高。

建议:一些实时性要求比较高的数据,还是从主库中读取。

微博? =》 主从只是一种方式。还有其他主从方式

主从配置还可以优化。

一个网站如何加快响应速度

部分:服务器(买更好的服务器)、数据库(mysql)、系统(Linux)、代码( 前端、后端 )

  1. 优化前端 a. 减少http请求 比如:减少图片、压缩css、压缩js 使用浏览器缓存

    b. CDN加速 就近原则。

    c. CSS放在页面最上面,JavaScript放在页面最下面

    d. 减少COOKIE传输

    COOKIE数据很大。不要往COOKIE里写过多的数据

  2. 后端 ( 没有人想要优化后端代码 )

  3. MySQL优化 a. 配置优化 mysql本身也有缓存(查询相同数据,第二次就是从mysql的缓存中拿的)

    b. 表结构优化 字段类型 表的设计最好符合三范式 表引擎的选择(myisam innodb) 表的字符集(gbk utf8)

    c. SQL语句 避免子查询

    减少多表联查

    d. 合理使用索引

    索引:索引其实就是一本书的目录

    有什么索引:主键、唯一、普通索引、全文索引

    索引优点:加快查询速度

    缺点:1、占用空间 2、写操作比较慢( 需要写入数据、还需要更新索引 )

    c. 分表、分区、主从数据库

  4. 缓存 Memcache Redis 页面静态化

Laravel Install Tideways

Published on November 14, 2019

docker install nginx php-fpm

Published on November 13, 2019