当前位置: 首页 > wzjs >正文

百度竞价网站谁做郑州做网站公司排名

百度竞价网站谁做,郑州做网站公司排名,深圳 SEO 网站建设 哪里学,电子工程网mcu缓存的重要性 无论是用于存储用户数据的索引【聚簇索引、二级索引】还是各种系统数据,都是以页的形式存放在表空间中【对一个/几个实际文件的抽象,存储在磁盘上】如果需要访问某页的数据,就会把完整的页数据加载到内存中【即使只访问页中的一…

缓存的重要性

  • 无论是用于存储用户数据的索引【聚簇索引、二级索引】还是各种系统数据,都是以页的形式存放在表空间中【对一个/几个实际文件的抽象,存储在磁盘上】
  • 如果需要访问某页的数据,就会把完整的页数据加载到内存中【即使只访问页中的一条记录】,在读写访问之后不立即释放该页的内存空间,将其缓存起来,下次请求访问该页面就可以省下磁盘I/O开销

Buffer Pool

  • 在MySQL服务器启动时就向操作系统申请一片连续的内存,innodb_buffer_pool_size【不包含控制块所占的内存空间大小】
    BufferPool内部组成

  • 连续的内存被划分为若干个页面【缓冲页】,页面大小与InnoDB表空间使用的页面大小一致【默认16KB】

  • 控制信息【所属的表空间编号、页号、缓冲页在Buffer Pool中的地址、链表节点信息等】-方便管理

  • 控制信息占用的一块内存称为控制块,与缓冲页一一对应

  • 在这里插入图片描述

  • 碎片-剩余空间不够一对控制块和缓冲页的大小

    • 在debug模式下控制块占缓冲页大小的5%左右,在非debug模式下控制块模块会更小点

free链表管理

在这里插入图片描述

  • Buffer Pool初始化过程

    • 向操作系统申请Buffer Pool的内存空间
    • 划分为若干对控制块和缓冲页【没有真实的磁盘页被缓存到Buffer Pool中(还没用到)】
    • 随着程序运行,磁盘的页不断被缓存到Buffer Pool中
      • 当磁盘读取一个页到缓冲池中,该放到哪个缓冲页【哪个缓冲页是空闲的】
      • 需要查看缓冲页对应的控制块
        • 将所有空闲的缓冲页控制块作为一个节点放在一个链表中【free链表、空闲链表】
          • 为了管理好free链表,定义一个基节点【包含链表的头节点地址、尾节点地址、当前链表中节点的数量等信息】
          • 基节点占用的内存空间不包含在Buffer Pool申请的内存空间内,而是单独申请的一块内存空间【一般40字节】
      • 每当磁盘加载一个页到Buffer Pool中,就从空闲链表中取一个控制块对应的缓冲页(从链表取控制块,通过控制块访问真正的页),然后把该缓冲页对应的free链表节点【对应的控制块】从链表中移除,表示该缓冲页被使用
  • 缓冲页的哈希处理

    • 表空间号+页号【key】来定位一个页,缓冲页控制块【value】
    • 需要访问某个页的数据时,先从哈希表中根据表空间号+页号看是否有对应缓冲页
      • 有-直接使用
      • 没有-从free链表中选一个空闲的缓冲页,把磁盘中对应的页加载到该缓冲页的位置
  • flush链表的管理
    在这里插入图片描述

    • 存储脏页的链表【Buffer Pool中修改过的,还未刷新到磁盘上的页】
    • 某个缓冲页对应的控制块不可能既是free链表的节点,也是 flush链表的节点【不可能既是脏页也是空闲页】
  • LRU链表的管理

    • Buffer Pool命中率越高越好【命中次数/访问了n页】
    • 简单的LRU链表
      • 使用到某个缓冲页,就把该页从磁盘加载到Buffer Pool中时,把该页对应的控制块作为节点塞到LRU链表的头部
      • 当空闲缓冲页使用完时,到LRU链表的尾部淘汰缓冲页
    • 划分区域的LRU链表
      • 简单LRU链表存在情况
        • InnoDB提供了预读服务,认为执行当前请求时,可能会在后面读取到某些页面就预先把这些页面加载到Buffer Pool中,如果预读成功可以极大提高执行效率,但如果用不到的话,前面所说的链表就会存在问题,Buffer Pool的命中率会大大降低【加载到Buffer Pool中的页不一定被用到】
          • 线性预读
            • 如果顺序访问的某个区(extent)的页面超过了系统变量innodb_read_ahead_threshold【一般默认56,服务器启动时通过启动选项来调整,或者使用SET GLOBAL命令来修改该全局变量】,会触发一次异步读取下一个区中全部的页面到Buffer Pool中
          • 随机预读
            • 如果某个区的13个连续页面被加载到Buffer Pool中【也就是指在后面提到的整个young区域的头1/4】,无论是否是顺序读取,都会触发一次异步读取本区中所有其他页面到Buffer Pool中的请求
            • 全局变量innoddb_random_read_ahead系统变量,默认值为OFF,不会默认开启随机预读功能
        • 全表扫描,全部叶子节点读一遍,后续执行其他语句时,又要把前面被淘汰的页面加载进Buffer Pool中【如果有很多使用频率低的页被同时加载到Buffer Pool中,可能会把使用频率高的页从Buffer Pool中淘汰掉
      • 将LRU链表分为两节
        • 一部分存储使用频率高的缓冲页【这部分链表叫热数据young区域】

        • 另一部分存储使用频率低的缓冲页【冷数据old区域】

        • 在这里插入图片描述

        • 随着程序的运行,某个节点所属的区域也可能发生变化

        • old区域大小可通过innodb_old_blocks_pct修改【一般3/8】

        • 在对某个处于old区域的缓冲页进行第一次访问时,就在它对应的控制块中记录下这个访问时间,如果后续的访问时间与第一次访问的时间在innodb_old_blocks_times时间间隔内,那么该页面就不会从old区域移到young区域的头部【可能是一次全表扫描的多次访问】

      • 进一步优化 LRU链表
        • 只有被访问页位于young区域1/4的后面时,才回被移动到LRU链表头部,可以降低调整LRU链表的频率,提升性能【减少链表的节点移动】
        • 优化核心:尽量高效地提高Buffer Pool命中率
http://www.dtcms.com/wzjs/96783.html

相关文章:

  • 上海购房网官网开鲁网站seo不用下载
  • 建个人网站精准ip地址查询工具
  • 抓取网站访客qqseo黑帽多久入门
  • 网站最好服务器关键词网站
  • 广州企立科技做网站建立自己的网站平台
  • 江苏公众科技网站建设搜狗站长工具平台
  • 手机网站分辨率做多大网络口碑营销
  • 电子商务公司网站怎么建百度权重4网站值多少钱
  • 怎么做网站调查表免费的个人网页
  • 做代收水果是什么网站seo搜索引擎优化营销案例
  • 郑州建网站哪个公司好网上国网app推广方案
  • 建设部网站关于乡建助理职责自媒体发布平台
  • 做网站什么是三网合一广告宣传方式有哪些
  • 昆明建设网站制作企业培训平台
  • 网站建设我要自学网2022知名品牌营销案例100例
  • 做网站需要走公司吗关键词排名怎么做上去
  • 工程建设招标中心网站短视频培训课程
  • 做暧免费观看网站纯注册app拉新平台
  • 大数据做网站流量分析百度搜索引擎属于什么引擎
  • 网站建设及使用青岛爱城市网app官方网站
  • 新建网站seo优化怎么做新冠疫情最新情况最新消息
  • 提供服务的网站搜索引擎网站排名优化方案
  • 西宁做网站公司哪家好网络推广的公司更可靠
  • 建设信访建设网站的意义口碑营销怎么做
  • 自己做的网站发布到网上视频播放不了陕西seo优化
  • 广东粤网建设有限公司seo运营培训
  • 物流业网站建设方案实验总结天津关键词优化平台
  • 网站被k 但收录内页网络营销概述ppt
  • 做图片推广的网站竞价托管sem服务
  • 江门做网站引流获客工具