zoukankan      html  css  js  c++  java
  • 高并发和缓存

    高并发:N个客户端同时访问,就会产生一个高并发;
    高并发(分情况):
    查询:加入缓存(数据库压力转移),负载均衡(同一份数据放到多台服务器上,当您访问的时候,我会把你路由在每台机器上,平均的让你把流量导到某台机器上,然后由他直接和你对应执行 ,我把一台机器上处理的任务,平均的分布在N台机器上进行处理),radis(基于内存的数据库,内存速度快,容易丢数据,空间小,比较贵)
                             
    插入更新:消息队列msmq(流量销分)
    硬件:把硬盘换成SSD,固态硬盘,建立硬盘矩阵,同时多个硬盘,类似硬盘的分布式,N个硬盘同时写同时读,一个硬盘读的慢,十个硬盘读的快,硬盘的高速阵列;
    队列特点:先进先出;
    分布式(秒杀):把任务分别放到不同计算机上,进行执行,进而达到更快的执行任务的目的;
    缓存:缓存主要是为了提高数据的读取速度,访问这条数据,先在缓存中查找,没有去数据库查找,找到后插入缓存中。
    缓存弊端:数据更新不及时,如果缓存中数据存储量小,去数据库的访问量大,有可能会引发缓存穿透。
    缓存穿透:你访问的数据都不在缓存当中,缓存还没有建立,刚启动服务器,你访问的每一个都会不经过缓存都访问到数据库上,这样会引发一个巨大的问题假死;
    缓存穿透解决:提前把数据加载到缓存当中,如果我不知道那些需要加载到缓存当中,我可以预先把10%的数据加载到缓存当中,压力就会下来,缓存预加载;
    sql优化:减少表join,查询的时候指定列,查询*,添加索引;
     
    大数据:数据库中大量的数据
    大数据解决:分表分库(按业务逻辑分,表分区,hash分表也叫hashmap把主键通过hash算法转化为大数然后取模对应的数量,服务器数量,表数量,来命中相应的服务器,或者相应的表),在适当的时候引入nosql数据库(hbase,mongodb),分服务,建立集群
    关系型数据库如何解决大数据:分表分库,分服务,分服务器(建立集群),表分区(把一个表分为多个物理的区域,进行存储)
    hashtable:也叫散列;
    编码的时候:常用的hash算法,比如在md5加密,把字符串转化为一个大的数,MD5加密就是一种hash算法,把你的字符串进行不可逆转换为一颗大数,转换为一个大的文本,然后通过一个指定的问题转换为指定长度的字符串,md5是一种hash算法;
    hashmap:hash取模这个算法叫做hashmap算法,hash路由根据hash命中对应的存储空间,键值对,根据你的key极快的找到你的value,分表分库,比如这个表有一亿条数据,有主键,主键是不重复的,是唯一的,我根据主键,然后采取一定的hash算法,把它转化成一个大数,我觉得一亿条数据对数据库太大了,我把它分为一百个表,一个表分一百万条,查询速度就会变快,存的时候,每个表都有一个主键,我把主键转成hash算法把它转为一个大数,比如用户主键lzh,通过特殊hash算法转为1008,然后进行取模,结果为8,它存在第八个表,然后利用lzh再查,一百万条数据查询速度是很快的,瞬间就命中,这个叫做hash分表,这个和业务无关;
    hash多个同时命中一个:根据hash算法,一万条数据,有好几个命中同一个空位,如果有一个命中后存在它里面,如果有第二个,就使用链表,后面存前面的key值,如此类推,如果链表达到一定长度,性能影响,hashtable就会扩容;
    equals比较:每个对象都会生成一个hashcode,对象与对象比较用hashcode,判断是否相等;

    红黑树和索引有关,B+树下面就是红黑树
    索引碎片产生的原因:每添加一条数据,添加的时间长,索引就会重排,重排的时候会引发索引碎片,增删都会引发索引碎片。
    hadoop:超大型数据集的应用程序,是一个框架;
    缓存穿透:查询一个并不存在的数据,然后把压力施加给数据库;
  • 相关阅读:
    2010全球最值得模仿的230个网站 dodo
    IIS支持解析json dodo
    很好用的界面设计工具——Balsamiq dodo
    git本地分支目录和远程服务器的分支目录不一样的同步方法
    中新赛克——基于工业资产全息画像的工业互联网安全监测平台 规格严格
    解决redis requires ruby version 2.3.0[转载] 规格严格
    fpm包安装 规格严格
    git本地分支目录和远程服务器的分支目录不一样的同步方法[转】 规格严格
    MyBatis逆向工程generatorConfig配置文件的Table中generatedKey的作用[转载] 规格严格
    How to set character_set_database and collation_database to utf8 in my.ini 规格严格
  • 原文地址:https://www.cnblogs.com/wpchina/p/10760358.html
Copyright © 2011-2022 走看看