美文网首页
Rails 网站效能 后端

Rails 网站效能 后端

作者: RealAnalysis | 来源:发表于2020-07-29 11:25 被阅读0次

    前端效能是关注“整体”requests们的效能 而后端效能是关注“个体”request效能

    就是单看每个request的执行速度

    个别 HTTP Request 的反应时间在哪里看?

    1. rails server最后一行 有反应时间
    2. 或者用gem看 能看到各种细节

    如何通过优化内存提升效能

    先讲讲数据调用的过程
    数据库会慢 因为数据库存在硬盘 调数据是从硬盘读出来 转成ruby object存在内存

    原来“分页”的gem 是用来防止 Post.all 这类把全部数据都读取到内存的代码 会导致慢到爆炸的啊

    find_each

    这个技术是我一直隐隐困惑的 添加了新字段 里面是空的 如何一笔笔补具体数据进去

    把数据库数据 切分成一千一千的数据去处理 就是每份数据size为一千. 比如,总体量为“一万”的数据量就会分十次去处理 这样就不是“遍历”十万 跟“分页显示”一个概念

    Preload的手法

    这preload的手法 精彩在思路上 很受用 多感受一下 很赞的!

    就是先把会用到的数据一次性全调出放内存 然后不同地方要用到“可能需要的全部数据”的一部分,那就用select过滤出这个地方需要的部分。这样只需要去硬盘调一次,不用仅仅因为每个不同部分需要的数据不一 每次都再跑硬盘调

    有个自己的小发现,用了preload的手法后,就算用count也不会调用 SQL 语言哦!跟size效果一样的 真是有趣!

    countsize

    两者区别
    count 是从“硬盘”里调取数据 用SQL去调用
    size 是已经调取放到内存里的数据 直接数组手法的总数 不是用SQL算

    总之就是,去“内存”调数据比去“硬盘”调 效能高的多

    想把 ActiveRecord 运用的得心应手 就要把 SQL玩的溜

    Instead of 把“全部post资料”从硬盘捞出来一股脑全放去内存 这样写SQL去捞数据 最后仅从硬盘捞出10笔数据放入内存

    效能当然快太多了!

    利用 SQL 让“数据库引擎”先运算好所需要的,按需从硬盘挑出目标放去内存,而不是一股脑全拖了丢去内存

    原来 where是用来查询的代码手法啊 就是在where里写查询条件的

    相关文章

      网友评论

          本文标题:Rails 网站效能 后端

          本文链接:https://www.haomeiwen.com/subject/ugizlktx.html