mysql数据库层的优化,web服务器的负载均衡

mysql数据库层的优化

优化方向:数据表数据类型优化,索引优化,sql语句优化,存储引擎的优化,数据表结构设计的优化,数据库服务器架构的优化

数据表数据类型优化:字段使用什么样的数据类型更合适,性能更快,tinyint、smallint、bigint,考虑空间和范围的问题;char、varchar,存储字符串长度是否固定;enum,特定固定的分类可以使用enum存储,效率更快;IP地址的存储,ip2long(),使用整型存储IP地址

索引的优化:建立合适的索引,索引在什么场景下效率最高,索引的创建原则:不是越多越好,在合适的字段上创建合适的索引,复合索引的前缀原则,like查询%的问题,全表扫描优化,or条件索引使用情况,字符串类型索引失效的问题

sql语句的优化:优化查询过程中的数据访问,优化长难句、特定类型的查询语句。使用limit,返回列不用*,变复杂为简单,切分查询,分解关联查询,优化count(),优化关联查询,优化子查询,优化group by和distinct,优化limit和union

存储引擎的优化:尽量使用innoDB存储引擎

数据表结构设计的优化:分区操作,通过特定的策略对数据表进行物理拆分,对用户透明,partition by;分库分表,水平拆分,垂直拆分

数据库架构的优化:主从复制,读写分离,双主热备,binlog日志,中继日志,主从库binlog的交换,事件传输;负载均衡,通过LVS的三种基本模式实现负载均衡,mycat数据库中间件实现负载均衡

web服务器的负载均衡

七层负载均衡的实现:基于URL等应用层信息的负载均衡,nginx的proxy是它一个很强大的功能,实现了7层负载均衡,功能强大,性能卓越,运行稳定,配置简单灵活,能够自动剔除工作不正常的后端服务器,上传文件使用异步模式,支持多种分配策略,可以分配权重,分配方式灵活。

nginx负载均衡:内置策略:IP Hash,加权轮询;扩展策略:fair策略,通用hash,一致性hash
  加权轮询:首先将请求都分给高权重的机器,直到该机器的权值降到了比其他机器低,才开始将请求分给下一个高权重的机器,当所有后端机器都down掉时,nginx会立即将所有机器的标志位清成初始状态,以避免造成所有的机器都处在timeout的状态;IP Hash:流程和轮询很类似,只是其中的算法和具体的策略有些变化,算法是一种变相的轮询算法;fair:根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流;通用hash,一致性hash:通用hash比较简单,可以以nginx内置的变量为key进行hash,一致性hash采用了nginx内置的一致性hash环,支持memcache

nginx配置:

http {
upstream cluster{
#ip_hash;
server srv1 weight=1;
server srv2;
server srv3;
}
server {
listen 80;
location / {
proxy_pass http://cluster;
}
}
}
  四层负载均衡的实现:通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。LVS实现服务器集群负载均衡有三种方式,NAT,DR和TUN

猜你喜欢

转载自blog.csdn.net/xghchina/article/details/114635116