数据库优化
1、防SQL注入
a、PDO预处理
b、使用php内置过滤敏感字符。 " ' # ;
mysql_escape_string() addslashes()
2、提高页面加载速度
a、减少http请求
减少图片、CSS文件、JavaScript
使用浏览器的缓存
b、Javascript要写在网页尾部。
c、CDN加速
e、页面静态化
f、经常查询的数据要缓存到内存
3、多台服务器的SESSION数据怎么共享
a、将session数据存放到数据库
b、存放到单独一台session服务器
c、将session存放到cookie。淘宝有的功能这么做。
4、高并发(同时很多去访问网站):
1、负载均衡,将请求分配给不同服务器。
2、将热数据缓存
3、消息队列。淘宝支付排队、12306排队买票
12306验证码为什么搞这么难。
负载均衡、可靠性、扩展性
数据库读写分离
冗余技术、横向扩展。
5、微信( weiphp ) Laravel(www.laravist.com) FQ:greenvpn
6、读写分离 主数据负责写操作(insert),从数据负责读(select)
读写分离怎么做数据同步:从库去主库复制bin-log(二进制日志)。bin-log是以二进制方式
存放写操作SQL语句。
主从数据库一般一主多从或一主一从
因为读操作多,所以从数据库多。
7、MySql分库。db1数据库服务器只存放用户数据 db2只存放商品数据 db3只存放订单。
对于MySQL,单表数据行数不能超过百万。
MySQL分表
水平分表 (将数据划分到多个表)
user有两个亿
id name
1 张三
2 李四
每个表一个亿
vip_user
id name
1 张三
user2
id name
2 李四
//李四要登录。vip_user表存放的是经常登录用户。
水平分表的优点:减少单表数据行数,从而加快查询速度
缺点:增加代码的维护难度。
垂直分表(将字段划分到多个表)
user 表 一个亿用户。
id name nickname(昵称) sex address email password xueli height sanwei phone weight qq birth
addTime loginTime logoutTime jifen
经常用到字段 id name nickname email password jifen
不常用的字段分到另外一个表 user_detail
商品表
id gname price Gdesc(text)
垂直分表优点:查询速度快
8、分区
9、广州市分为很多个区。
10、CDN (内容分发网络 Content Delivery Network)
CDN概念:通过在网络各处(网络节点)放置服务器,将静态资源(CSS文件 js 图片、视频)缓存在离用户最近的地方,使用户以最快速度获取数据。
就近原则。
武汉有机房(华中) 岭南(广州) 华北(北京)
百度:因为用户分布广泛。百度服务器机房主要城市都有。
CDN公司:阿里、SAE 、百度、又拍云、七牛
11、代理? 火车代售点(代理) 代理点靠近用户
反向代理是靠近服务器。其实就是缓存。
反向代理先在反向代理服务器找资源,如果代理服务器没有你要的资源。才去服务器拿。
反向代理实现的软件:Nginx Nginx优点:并发处理能力高,比apache并发能力强。
squid 专业
12、分布式文件系统。 A文件服务器存放用户数据。 B文件服务器存放商品数据。
13、站内search
like的速度非常慢。为什么?like会导致全表扫描。
select id,name from good where name like "%fff%";
大型网站的站内搜索用的是开源搜索引擎 sphinx(斯芬克斯)
14、NoSQL的数据存放到内存。 NoSQL能不能替代MySQL,暂时不能。
1、内存贵。
2、数据安全问题。
15、DAL数据访问层( 提供很多方法给你去拿数据 )
简述MVC。
MVC是一种程序分层思想。
M是Model,Model负责网站的业务逻辑( 一般的网站的业务逻辑是数据库操作 )
V是view,view负责把控制器分配过来的数据呈现( 渲染 )给用户
C是controller 是Model与V的桥梁。
一般是应用比较多的情况下需要一个DAL, QQ 游戏 微信( 广州海珠区TIT创意园 )
微信要拿用户数据,要调用已经写到一些方法。
16、业务拆分
应用怎么关联。通过链接就可以关联
百度:搜索、地图、贴吧
17、内存缓存怎么做?
要将热数据缓存。
缓存时间怎么设置?
缓存时间不能设置成一样。缓存时间一样会导致雪崩。
18、缓存模块!!! cache S()