zoukankan      html  css  js  c++  java
  • 系统架构知识梳理

    1.访问数据库查询数据2种方式。 全表扫描和索引。

    1)尽量使用索引,避免全表扫描。  应对where,orderby建立索引;where null ,《》!=,like,between in,in not in 不要使用最好

    2)未必使用索引都比全表扫描快。  比如:当数据量很小的情况,全表扫描的速度可能会比使用索引快。

    3)索引    优点:加快数据查询    缺点:写入数据库容易造成页碎片,插入,删除数据会重新生成索引,还得移动附近的数据,容易造成部分存储空着用不到

         索引的结构是 B树(左右节点数目近乎相同),即二叉树;

         有根节点,非页节点(引导根节点到页节点上),页节点(包含索引数据的页)

    2.视图的好处

    假如需要查询下面的数据,sql语句如下

    select  A.id,B.no,B.no2   from  A,B  where A.id=B.id        首先,编码人员需要知道数据库表的关联以及相关字段id。

    如果我们有个view 视图 如下。

    create view v_example as

    select A.id,B.no,B.no2 from A,B where A.id=B.id

    那么我们查询的语句应为: select * from  v_example   (告诉数据库把查询v_example视图的获得的数据直接给我)

    好处:1)不需要熟悉表关联关系,可以直接获取数据   2)对闲杂人员,隐藏表真实内部结构,增强安全性。

    3.传统web架构,大体上简单架构

    web负载均衡,服务器集群,主从数据库(读写分离),缓存技术,队列,分布式存储。

    1)web负载均衡cdn

    分担节点的压力,分担到其他节点上面去。尤其大并发量,可以将并发了分担到不同节点上。

    ?web服务器如何确保 各台程序都相同

    2)服务器集群

    将一个复杂计算分配到几个节点上面去,然后汇总各个节点的结果。

    3)主从数据库(读写分离)   Master和Stave数据库,解决写数据库造成数据库卡。

    数据库作用就是被读写;当写数据的时候会对数据进行行锁,页锁,段锁,会影响其他数据的查询。

    经过调查 读:写 10:1。 

    那么分主数据库和从数据库。

    主数据库用于增删查数据写入和最新数据的读取(从数据库是通过订阅主数据库数据进行数据库同步的,会有不等的延时,可以设置时间,延时几分钟,几小时等)。

    从数据库用于 读改动很小的数据,比如:60天之前的订单信息(几乎不会变动)。

    例:可以将订单号格式设置为 年月日小时分钟秒随机数.  20110523180012sdfdfjk

         根据订单号,确定是否为60天之前的订单,如果是 设置 connectring=从数据库的信息,如果不是 connectring=主数据库的信息。

    例:豆瓣读书:  图书信息,标签信息,评论信息,喜欢这本书的读者列表

      图书信息需要最新的,所以可以从主数据库读取

    标签信息不需要很新不需要及时,从从数据库读取

    评论信息需要即使,主数据库读取

    喜欢这本书的读者列表,从从数据库读取。

    4)缓存技术 

    命中率(命中次数/总次数)

    一级缓存常常是单独服务器,二级缓存指的是web服务器的缓存

    页面html缓存;页面局部元素缓存;复杂查询结果集缓存;耗时查询,如产品列表页面;热点查询。

    5)分布式存储

    6)队列

    sql队列:发送email,发送短信等。

    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

    数据库优化:

    垂直划分: 用户的不同信息最好存不同表或者数据库中
    水平划分: 同一表中数据 存放到2个数据库中,结构也相同。  方法: 如基数id放在A数据库,偶数id放在b数据库; %10也行; hash算法也行。

    数据库备份,当出现问题立马切换。切换策略呢?    web服务器,数据库服务器,备份服务器(存放数据库配置,web配置,缓存配置。当遇到问题通过切换策略替代有问题的服务器。直接换

    个ip就可以了。)

  • 相关阅读:
    silverlight中path对象使用总结
    推荐一款Silverlight数据列表控件AgDataGrid
    在silverlight中实现Marquee效果
    在silverlight中使用IsolateStore隔离存储(下)
    在silverlight中使用IsolateStore隔离存储(上)
    在Silverlight中使用DynamicMethod(动态方法)
    使用createObject(createObjectEx)创建silverlight对象
    在Silverlight中使用Json
    怎么这两天总能看到刺激我的好东西
    使silverlight适应IE窗口大小的方法
  • 原文地址:https://www.cnblogs.com/StudyLife/p/3132231.html
Copyright © 2011-2022 走看看