配置信息从config读快,还是在mysql快🤔️🤔️🤔️

配置信息从config读快,还是在mysql快🤔️🤔️🤔️

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
godruoyi
最佳答案

如果程序运行需要的数据都在寄存器里,从寄存器读取最快

如果寄存器里也没有,从内存读取快

如果内存也没有:

直接从本地硬盘读取

  1. 读取 1 页会比读取多页快
  2. 固态硬盘会比机械硬盘快

通过网络请求读取

  1. 从已有连接读取比重写新建连接快
  2. 本地文件 socket 比 TCP 快

综上,若你采用配置文件方式

  1. 使用内存缓存(如 redis)直接 cache 到内存最快
  2. 使用 file cache 缓存到磁盘 + 使用 ssd 较快

若使用数据库方式

由于 php 的特性,根本没有数据库连接池的概念,每次请求都会新建一个 DB connection(同一请求中的多个数据库操作可能会共用连接)再由数据库引擎根据 sql 从磁盘/或缓存读取;

最终数据库都是需要读取 db 数据文件才能找到对应数据的,只是数据库引擎为我们做了很多优化,允许我们只获取大量数据的其中一段。

从这点看的话,你的 config 要是数据量小,直接存本地文件也是比数据库操作快的,当然内存优先。

3年前 评论
臭鼬 (楼主) 3年前
讨论数量: 15

我猜 Config + Cache 最快。

数据库需要网络通讯,像大多数 PHP 应用每次请求与数据库建立网络连接的过程就不够快了。而单纯用 Config 文件,每次请求过来都需要 Parse 一遍 Config,如果磁盘性能不够好,速度也不一定快。

3年前 评论
playmaker

不配最快

3年前 评论
臭鼬 (楼主) 3年前
playmaker (作者) 3年前
臭鼬 (楼主) 3年前

肯定配置文件最快

3年前 评论
playmaker 3年前

现在性能追求都到这个地步了吗?db存储也不是每次请求都会查询啊,选择哪种方式综合来说还是看业务,频繁修改的配置还是存db,这点速度不是很重要!

3年前 评论
臭鼬 (楼主) 3年前
giao哥

不经常修改 env 需要经常变更在DB做个词典管理

3年前 评论

我猜 Config + Cache 最快。

数据库需要网络通讯,像大多数 PHP 应用每次请求与数据库建立网络连接的过程就不够快了。而单纯用 Config 文件,每次请求过来都需要 Parse 一遍 Config,如果磁盘性能不够好,速度也不一定快。

3年前 评论

Config File 快于 DB,Cache 默认走得也是 File

3年前 评论
fatrbaby

读文件最少是1次IO,数据库至少是2次IO。

3年前 评论

多机部署用DB,单机的config

3年前 评论
godruoyi

如果程序运行需要的数据都在寄存器里,从寄存器读取最快

如果寄存器里也没有,从内存读取快

如果内存也没有:

直接从本地硬盘读取

  1. 读取 1 页会比读取多页快
  2. 固态硬盘会比机械硬盘快

通过网络请求读取

  1. 从已有连接读取比重写新建连接快
  2. 本地文件 socket 比 TCP 快

综上,若你采用配置文件方式

  1. 使用内存缓存(如 redis)直接 cache 到内存最快
  2. 使用 file cache 缓存到磁盘 + 使用 ssd 较快

若使用数据库方式

由于 php 的特性,根本没有数据库连接池的概念,每次请求都会新建一个 DB connection(同一请求中的多个数据库操作可能会共用连接)再由数据库引擎根据 sql 从磁盘/或缓存读取;

最终数据库都是需要读取 db 数据文件才能找到对应数据的,只是数据库引擎为我们做了很多优化,允许我们只获取大量数据的其中一段。

从这点看的话,你的 config 要是数据量小,直接存本地文件也是比数据库操作快的,当然内存优先。

3年前 评论
臭鼬 (楼主) 3年前

关系型 数据 db快 非关系型 config 大概会有阈值一说 但是这个理论应该没毛病

3年前 评论
李铭昕

那些说 DB 或者 Cache 块的都什么心态。。肯定读文件最快啊。。也就是读 配置更快

无论是读数据库还是读Redis,全都要走网络 IO,读文件至少还是个普通文件IO。。。

除非你文件特别大,一口气读不进内存。

3年前 评论
李铭昕 (作者) 3年前
xianyunyehe

文件肯定是比数据库快的,文件IO的时间 肯定是 小于网络IO

3年前 评论

肯定是config文件比较快、不过我项目中的配置大部分都在数据库里面、然后再写入缓存。

3年前 评论

mysql还要建立tcp连接等进行网络通信 我觉得会慢一些

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!