大型项目优化方向

项目优化的方向

1.一个较大的项目,用户量为1000w,预计文章总数10亿,每天至少10w跟新量,每天访问5000w,对数据的读写操作比例超过10:1,如何设计?

数据库的设计:
1.存储引擎的选择,若项目需要事务,则选innodb,否则选myisam
2.字段尽量精简,列类型适中,切记使用一个较大的数据类型存储一个较小的数据导致空间的浪费,以char代替varchar,以tinyint代替枚举,以逗号分隔的id字符串代替集合,以整形存储iP,以整形存储时间戳等等
3.使用缓存,例如redis,memcache等来减少数据库的连接
4.合理建立索引
5.单表数据量过大,则可以分区分表,使用水平分隔或者垂直分隔将数据表内容一分为多,减少数据库的压力,自己写规则,建一个中间表来实际存储多表的id字段,数据的写入和查询按照自己的规则判断存入的表和读取的表
6.数据表实现主从复制读写分离,分布式存储,主服务器写入,从服务器查询。在主服务器的配置文件中,开启二进制日志,
log-bin=mysql-bin指定二进制日志存储的名称
binlog_format=mixd指定二进制日志存储的类型
server-id=128指定一个id,唯一即可
主服务器写入的时候,二进制日志记录了主服务器sql语句以及对数据表操作的语句,但从服务器想访问主服务器的二进制日志,需要主服务器的授权用户密码,通过主mysql服务器的
grant replication slave on . to lican@”192.168.%.%” identified by ‘520’;
再查看主服务器的状态 show master status 得到当前二进制文件的文件名和position节点

从服务器通过客户端命令change master to master_host=”192.168.124.128”,master_user=”lican”,master_password=”520”,master_log_file=”mysql-bin-000010”,master_log_pos=245
从mysql服务器连接的主服务器的二进制日志文件,将其内容sql语句跟新到自己的数据库数据表中,所以实现了从服务器与主服务器数据表的结构和数据一样

系统框架:实现负载均衡,一台web服务器实现前台请求的分发,多台web服务器处理请求

网络架构:

分布式存储(分表存储):就是将数据存放到多个服务器数据库下的数据表中,以减小单台mysql服务器的压力
负载均衡:多台执行请求的服务器集群
主从复制:两台或多台服务器的数据一模一样,只是主表写入,从表读取

你可能感兴趣的:(php,php)