您现在的位置是:首页 >MySQL网站首页MySQL
数据库优化
- 学无止境
- 2019-02-23
- 4789 已阅读
- 0
读写分离
主库负责写,从库负责读。 数据如何同步:从库复制主库的bin-log文件,因为bin-log文件存放的是写到主库SQL语句。
还有哪些产品可以做到读写分离: 1. mycat 2. 360 proxy
https://github.com/Qihoo360/Atlas
负载均衡器
作用: 起到分发请求的作用。
有哪些: LVS/F5/Nginx
带来的问题:
不同的应用服务器之间无法共享SESSION数据
解决方案:1. 放到数据库 2. 放到缓存 3. 放到SESSION服务器 4. 放到COOKIE中
冗余技术
作用:为了防止网站单点故障。
冗余技术就是增加多余的设备,以保证系统更加可靠、安全地工作。
大网站一定要做到高可靠。高可靠:99.999%
异地备份,容灾
服务器集群 = 负载均衡 + 冗余
一般的网站都是读多写少
MySQL做了读写分离还需要做很多工作
当用户量达到两个亿,意味着用户表的数据有两个亿的数据。
MySQL单表的记录行数不要超过1千万。
文件,数据变大,查询速度都会变慢。
分表(重点)
垂直分表、水平分表
垂直分表: 就是将一些字段划分到其他的数据表中。
水平分表: 就是将数据划分到不同表中。 水平分表优点:1. 减小单表数据行数 2. 加快查询速度
关注一个公众号: 架构师
user表
id name pass
2 jack fjdsla
4 lili fjlala
user1 id name pass 1 fj jjf
3 mary fjdlks
分区
一张表进行分区后,一张表还是一张表,只是存放数据的文件变多了。
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', jobcode INT NOT NULL, storeid 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) );
结论:大网站暂时没有去使用。因为分区只能对数字类型进行分区。
MyISAM引擎与Innodb引擎的区别(重点)
MyISAM引擎会产生三个文件,分别是.MYD是存放数据,.MYI存放索引,.FRM存放表定义。Innodb只会产生一个.frm文件,innodb引擎的数据是存放ibdata1这个文件中
Innodb支持事务处理,MyISAM不支持事务的
Innodb支持行锁,表锁,MyISAM只支持表锁
一般认为MyISAM查询速度比Innodb快
CDN加速
CDN(内容分发网络), 只能存放静态资源(HTML/图片/视频)的。CDN可以把你的静态资源放到离用户最近的地方。
用户分布广,网络情况复杂。网站保证每个用户访问你的网站,又不能很慢。
搜索引擎
大网站站内搜索: 不能使用like, 因为like会扫描整个表。
站内搜索使用搜索引擎。 比如:sphinx/xunsearch/coreseek
从库复制主库bin-log文件。
MySQL操作bin-log文件的命令
//新增一个bin-log文件 mysql> flush logs;
//清空所有的bin-log mysql> reset master;
//查看数据库bin-log文件状态 mysql> show master status;
## 利用MySQL的bin-log文件配置的读写分离存在的问题
从库与主库之间数据同步会有一定时间差,当同时往主库里面插入很多数据,时间差更加明显
有些时候,实时性高的数据还是从主库查
上一篇:Mysql建表
下一篇:MySQL主从配置完整步骤资料