网站优化 和 数据库存储引擎区别
2018-01-03 22:54
211 查看
优化核心:
就是减少对数据库的连接与操作(因为mysql是数据库的瓶颈,造成高并发);
A: 架构成层 :分布式部署(mysql服务)
① 主从复制(通过读取主服务器(mysql)的二进制文件,重新在从服务器上执行一次,同步数据);
②读写分离(把数据表的增删改和查询分离开来,通过连接不同服务器的数据库,实现读写分离,提高mysql数据库的并发负载能力)
③ 搭建服务器集群 注释:通过nginx负载均衡搭建服务器集群
④ 设置缓存(redis memcache mongoDb)
B:从底层来说
选取合适的数据库引擎(myisam 和 innodb(注意他们的区别));
选取合适的字段(原则:能用小的不用大的,选取小的空间,选取运行速度快的,能选取定长的不选取变长的);尽量将一些数据转化成整型进行存储,如ip和时间
建立适当的索引,提高查询效率(索引:类似查询目录,对数据表的一类或者多列进行排序的结构,该结构支持一定的算法,可以快速的查询数据,分为主键、唯一索引、普通索引、全文索引。);
注意:
①索引使用的场景
where 条件里面涉及到的字段、order条件里面涉及到的字段。字段的值足够多样化,尽量不要重复(比如性别就不能建立索引);
索引的使用原则:用explain查询计划
a. 左原则 : like查询的时候,左边尽量不能使用%;
b. or原则 :使用or的时候,两边的字段必须是索引字段,才能使用索引,否则失效;
c.复合索引的时候,必须使用复合索引的第一个索引字段才有效 key(name,password);
d.如果mysql估计全表扫描比使用索引查询效率高时,就不要使用索引;
②myisam和innodb的区别:
事务:myisam不支持事务,innodb支持事务
myisam支持压缩机制
存储文件: myisam存储文件分为:结构文件,数据文件,索引文件;innodb存储文件:结构文件、数据/索引文件;
并发性: myisam并发性较差,因为myisam使用的是表锁机制,当对表操作的时候,会将整个表锁住,但是读写速度快;Innodb并发性好,因为采用的是行锁机制,当操作数据时,智慧锁住当前的某一条记录,但是读写速度相对慢;
Myisam不会根据主键大小进行排序,Innodb会根据主键的大小进行排序
C: sql 语句层
开启mysql的查询缓存
将上次查询的结构缓存下来,以便下次从新使用; 原则:字段不参与运算,数据库发生改改变(包括结构和数据的改变),查询语句里面含有变化的条件,查询语句大小写也会生成不停的缓存;
开启慢查询日志
D:设计层
如果数据足够大,可以考虑物理谁给你的分表和虚拟化分区;
分区是两者之中比较好的方法,通过range、list、hash、key分区,把一张表分成多个区域,提高查询效率,但实际上还是一张表;
就是减少对数据库的连接与操作(因为mysql是数据库的瓶颈,造成高并发);
A: 架构成层 :分布式部署(mysql服务)
① 主从复制(通过读取主服务器(mysql)的二进制文件,重新在从服务器上执行一次,同步数据);
注释:主从服务器指的是数据库的主服务和从服务
②读写分离(把数据表的增删改和查询分离开来,通过连接不同服务器的数据库,实现读写分离,提高mysql数据库的并发负载能力)
③ 搭建服务器集群 注释:通过nginx负载均衡搭建服务器集群
④ 设置缓存(redis memcache mongoDb)
B:从底层来说
选取合适的数据库引擎(myisam 和 innodb(注意他们的区别));
选取合适的字段(原则:能用小的不用大的,选取小的空间,选取运行速度快的,能选取定长的不选取变长的);尽量将一些数据转化成整型进行存储,如ip和时间
建立适当的索引,提高查询效率(索引:类似查询目录,对数据表的一类或者多列进行排序的结构,该结构支持一定的算法,可以快速的查询数据,分为主键、唯一索引、普通索引、全文索引。);
注意:
①索引使用的场景
where 条件里面涉及到的字段、order条件里面涉及到的字段。字段的值足够多样化,尽量不要重复(比如性别就不能建立索引);
索引的使用原则:用explain查询计划
a. 左原则 : like查询的时候,左边尽量不能使用%;
b. or原则 :使用or的时候,两边的字段必须是索引字段,才能使用索引,否则失效;
c.复合索引的时候,必须使用复合索引的第一个索引字段才有效 key(name,password);
d.如果mysql估计全表扫描比使用索引查询效率高时,就不要使用索引;
②myisam和innodb的区别:
事务:myisam不支持事务,innodb支持事务
myisam支持压缩机制
存储文件: myisam存储文件分为:结构文件,数据文件,索引文件;innodb存储文件:结构文件、数据/索引文件;
并发性: myisam并发性较差,因为myisam使用的是表锁机制,当对表操作的时候,会将整个表锁住,但是读写速度快;Innodb并发性好,因为采用的是行锁机制,当操作数据时,智慧锁住当前的某一条记录,但是读写速度相对慢;
Myisam不会根据主键大小进行排序,Innodb会根据主键的大小进行排序
C: sql 语句层
开启mysql的查询缓存
将上次查询的结构缓存下来,以便下次从新使用; 原则:字段不参与运算,数据库发生改改变(包括结构和数据的改变),查询语句里面含有变化的条件,查询语句大小写也会生成不停的缓存;
开启慢查询日志
D:设计层
如果数据足够大,可以考虑物理谁给你的分表和虚拟化分区;
分区是两者之中比较好的方法,通过range、list、hash、key分区,把一张表分成多个区域,提高查询效率,但实际上还是一张表;
相关文章推荐
- Asp.Net 网站优化 数据库优化措施 使用主从库(下)
- 优化杭州某著名电子商务网站高并发千万级大型数据库经验之- 读写分离
- 网站性能优化实践-for循环中的数据库操作
- 网站首页调用数据库数据过多,显示较慢,如何优化?
- 搜索引擎优化:Google与百度对待网站的区别
- 【java面试系列之数据库篇】数据库存储引擎、索引、事务、视图、优化
- 大流量网站该如何配置优化?服务器、静态化、数据库优化、负载均衡应多管齐下
- 网站优化网址后缀带/和不带/的区别
- 优化杭州某著名电子商务网站高并发千万级大型数据库经验之- SQL语句优化
- Asp.Net 网站优化系列 数据库优化 分字诀 分表(纵向拆分,横向分区)
- Asp.Net网站优化:数据库索引优化
- Asp.Net 网站优化 数据库优化措施 使用主从库(下)
- 网站性能优化 - 数据库及服务器架构篇
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
- 优化杭州某著名电子商务网站高并发千万级大型数据库经验之- 读写分离
- 大流量网站该如何配置优化?服务器、静态化、数据库优化、负载均衡应多管齐下
- 网站性能优化-数据库及服务器架构篇
- 优化杭州某著名电子商务网站高并发千万级大型数据库经验之- 内存性能
- Asp.Net网站优化系列 数据库的优化措施 索引优化