重点(数据库优化)
数据库的几个版本: sqlserver 2000, 2005 ,2008 ,2012,2014(云计算)
Mysql Oracle DB2
数据库优化
1:增加索引
2:分表 两种
3:数据库的垂直分离(发布和订阅)
4:Nosql
5:读写分离(数据库的IO资源读写竞争非常大)
1.一个表的数据量非常大,导致查询慢
解决方案:
a.增加索引
b.分表
c.数据库的垂直分离
d.Nosql(非关系型数据库) --MogoDB , Redis
a:增加索引:
1:聚集索引:特点:任何一个表至少有且一个聚集索引,一般聚集索引自动创建在主键上(具有主键的一切特征) ,可以由一个或则多个组合建索引,标记当前表数据的物理位置排列2:非聚集索引特点:一个表可以有多个非聚集索引,一般创建在where order by , group by 的字段中 可以由一个或则多个组合创建索引,标记当前表数据的逻辑位置排列,相同的值数据会放在同一个索引页中3:聚集索引缺点:如果一个加了索引的字段有频繁改变,则会导致索引页的重新排列 而重新排需要消耗性能总结:所以当数据量大的时候 或则加索引的字段值变动不频繁的时候我们就会用非聚集索引b:分表的几种方法:1:求余法:Hash() 缺点:当现有的表存满的时候,不能立即加2:路由表(索引表)法:确定一个表的字段和开始结束时间段,在现有表存满的时候那么就在那个表的字段新增一个表,新确定时间段,例如我们在登qq查看历史记录的时候我们就可以通过louc:确定主DB(负责写入数据),从DB(负责读数据)1:主DB是以增量脚本的形式发送给db执行2:订阅发布有两种形式: 1:从db定时轮询主DB是否有数据需要同步,主DB有数据更新的时候,才会生成脚本发送给从DB(推荐 性能好),就是观察者模式,使用委托来进行实现的3:MSSQLSERVER实现订阅发布功能的步骤:a:检查主DB的一个文件夹是否有读写权限,如果没有则自己增加Everyone的读写权限地址网上百度b:直接看视频 注意点:需要开启代理服务
2.数据库的IO资源的读写竞争非常大:
解决方案: 读写分离
写:Insert Update Delete
读:Select
注意:
1:数据类型的分类:
a:关系型数据库 特点:做insert update delete的时候会开启隐式事务来维持数据的完整性 (隐式事务:数据库自己开的事务 显示事务:程序员自己开的事务) 缺点:消耗性能 并且要写日志.ldf
2:Nosql 特点: a:key-value存储数据的 b:没有事务去维持数据的完整性 优势:查询速度快 数据占用磁盘的控件小,占用量通常是关系型数据库的几十分之一
session储存数据不好的原因:iis中由于有进程回收机制,系统繁忙的话Session会丢失
解决session数据不稳定的弊端的方法
利用cookie和cache创建一个Session ,解决session储存数据不稳定的弊端
补充:将数据储存在进程外或则进程内session中都是不稳定的,
解决方法:利用cookie和cache中结合创建一个session ()
原理:将cache的建当作sessionid 储存在cookie集合中
将数据储存在缓存中,就像储存在session池中
浙公网安备 33010602011771号