xialeistudio / xialeistudio.github.io

blog
5 stars 0 forks source link

解决数据库N+1查询问题 - 每天进步一点点 #32

Open xialeistudio opened 5 years ago

xialeistudio commented 5 years ago

https://www.ddhigh.com/2019/06/18/database-n-1-solution.html

purevirtual commented 5 years ago

第3种解决方案其实就是yii2-orm里面的with的实现思路 这样在多个project-list的时候 写$project->tags $project->user 等等的时候就可以避免产生大量的无效查询了

xialeistudio commented 5 years ago

@purevirtual 第3种解决方案其实就是yii2-orm里面的with的实现思路 这样在多个project-list的时候 写$project->tags $project->user 等等的时候就可以避免产生大量的无效查询了

是的,有yii2相关问题也可以交流,这个框架真的是用过最好用的

purevirtual commented 5 years ago

@purevirtual 第3种解决方案其实就是yii2-orm里面的with的实现思路 这样在多个project-list的时候 写$project->tags $project->user 等等的时候就可以避免产生大量的无效查询了

是的,有yii2相关问题也可以交流,这个框架真的是用过最好用的

这个赞同 对很多语言有过涉猎 以前也用过ruby.rails 可惜玩的人太少 python的人又不专业 spring很好但是太重而且不太喜欢java 所以在yii2里面OOP和各种设计思想 扩展 做得真心很好 我司也在yii2上做了一些积累 有机会可以交流一下

我昨天+今天用了feishi那个yii2-swoole 虽然能够运转 但是碰到一些问题 user/log等组件方面的 看来他可能集成了很多自己的组件相关的东西 所以我打算先试试你这个对比一下在做选型 有个问题请教您 我看你的readme和示例里面的例子 你是用的yii2的basic版本吗?那advanced模板是不是还需要我自己手动改?

xialeistudio commented 5 years ago

@purevirtual

@purevirtual 第3种解决方案其实就是yii2-orm里面的with的实现思路 这样在多个project-list的时候 写$project->tags $project->user 等等的时候就可以避免产生大量的无效查询了

是的,有yii2相关问题也可以交流,这个框架真的是用过最好用的

这个赞同 对很多语言有过涉猎 以前也用过ruby.rails 可惜玩的人太少 python的人又不专业 spring很好但是太重而且不太喜欢java 所以在yii2里面OOP和各种设计思想 扩展 做得真心很好 我司也在yii2上做了一些积累 有机会可以交流一下

我昨天+今天用了feishi那个yii2-swoole 虽然能够运转 但是碰到一些问题 user/log等组件方面的 看来他可能集成了很多自己的组件相关的东西 所以我打算先试试你这个对比一下在做选型 有个问题请教您 我看你的readme和示例里面的例子 你是用的yii2的basic版本吗?那advanced模板是不是还需要我自己手动改?

advanced模板可以参照basic里面的组件改一下,自己过一遍印象更深,对了,这种形式的yii2-swoole是不支持协程的,因为Yii2里面application里面的组件都是单例,协程里面如果使用单例模式去访问连接资源(数据库连接)会出错的。

这个版本最大的好处是 减少了重复加载开销,文件只加载一次,以及支持docker更好一点,fpm版本的PHP要配合NGINX才能服务

xialeistudio commented 5 years ago

@purevirtual

@purevirtual 第3种解决方案其实就是yii2-orm里面的with的实现思路 这样在多个project-list的时候 写$project->tags $project->user 等等的时候就可以避免产生大量的无效查询了

是的,有yii2相关问题也可以交流,这个框架真的是用过最好用的

这个赞同 对很多语言有过涉猎 以前也用过ruby.rails 可惜玩的人太少 python的人又不专业 spring很好但是太重而且不太喜欢java 所以在yii2里面OOP和各种设计思想 扩展 做得真心很好 我司也在yii2上做了一些积累 有机会可以交流一下

我昨天+今天用了feishi那个yii2-swoole 虽然能够运转 但是碰到一些问题 user/log等组件方面的 看来他可能集成了很多自己的组件相关的东西 所以我打算先试试你这个对比一下在做选型 有个问题请教您 我看你的readme和示例里面的例子 你是用的yii2的basic版本吗?那advanced模板是不是还需要我自己手动改?

针对协程版本,我目前参考Yii正在开发新的框架,核心思想也是组件化,实现了支持协程的通用连接池,目前卡的查询编辑器。。你有兴趣参与的话,可以一起来开发,此外吐槽一下Yii的查询模块设计的有点过度了。。。

purevirtual commented 5 years ago

@purevirtual

@purevirtual 第3种解决方案其实就是yii2-orm里面的with的实现思路 这样在多个project-list的时候 写$project->tags $project->user 等等的时候就可以避免产生大量的无效查询了

是的,有yii2相关问题也可以交流,这个框架真的是用过最好用的

这个赞同 对很多语言有过涉猎 以前也用过ruby.rails 可惜玩的人太少 python的人又不专业 spring很好但是太重而且不太喜欢java 所以在yii2里面OOP和各种设计思想 扩展 做得真心很好 我司也在yii2上做了一些积累 有机会可以交流一下 我昨天+今天用了feishi那个yii2-swoole 虽然能够运转 但是碰到一些问题 user/log等组件方面的 看来他可能集成了很多自己的组件相关的东西 所以我打算先试试你这个对比一下在做选型 有个问题请教您 我看你的readme和示例里面的例子 你是用的yii2的basic版本吗?那advanced模板是不是还需要我自己手动改?

advanced模板可以参照basic里面的组件改一下,自己过一遍印象更深,对了,这种形式的yii2-swoole是不支持协程的,因为Yii2里面application里面的组件都是单例,协程里面如果使用单例模式去访问连接资源(数据库连接)会出错的。

这个版本最大的好处是 减少了重复加载开销,文件只加载一次,以及支持docker更好一点,fpm版本的PHP要配合NGINX才能服务

好的 我明白了 我现在主要是苦于没有一个“完整正确的”支持协程的yii2 swoole 本身对两者结合的理解不太深 那个feeshi的有些问题 所以我打算先自己跟着这篇文章手动写一遍 https://www.jianshu.com/p/9c2788ccf3c0

purevirtual commented 5 years ago

@purevirtual

@purevirtual 第3种解决方案其实就是yii2-orm里面的with的实现思路 这样在多个project-list的时候 写$project->tags $project->user 等等的时候就可以避免产生大量的无效查询了

是的,有yii2相关问题也可以交流,这个框架真的是用过最好用的

这个赞同 对很多语言有过涉猎 以前也用过ruby.rails 可惜玩的人太少 python的人又不专业 spring很好但是太重而且不太喜欢java 所以在yii2里面OOP和各种设计思想 扩展 做得真心很好 我司也在yii2上做了一些积累 有机会可以交流一下 我昨天+今天用了feishi那个yii2-swoole 虽然能够运转 但是碰到一些问题 user/log等组件方面的 看来他可能集成了很多自己的组件相关的东西 所以我打算先试试你这个对比一下在做选型 有个问题请教您 我看你的readme和示例里面的例子 你是用的yii2的basic版本吗?那advanced模板是不是还需要我自己手动改?

针对协程版本,我目前参考Yii正在开发新的框架,核心思想也是组件化,实现了支持协程的通用连接池,目前卡的查询编辑器。。你有兴趣参与的话,可以一起来开发,此外吐槽一下Yii的查询模块设计的有点过度了。。。

swoole我看到有专门的对口的协程Php框架 叫swoft 我看了一下文档蛮全的 用的人也很多 可以先试试那个 你的查询编辑器指的是查询条件构建器?queryBuilder这层吗?yii2的这种“过度设计” 主要还是为了实现一种解耦和模式 各种数据库都可以利用这种方式来构建查询 不过我自己实现的时候也比较烦 实现过一个憋足的aliyun-opensearch的AR 后来有es了就直接不用了 想要写好确实不容易

xialeistudio commented 5 years ago

Swoft是大而全的框架,挺好用的,不过还是喜欢yii这种可以自定义组件的写法, 哈哈

purevirtual commented 5 years ago

Swoft是大而全的框架,挺好用的,不过还是喜欢yii这种可以自定义组件的写法, 哈哈

我记得yii2组件化的思想来自于Symfony 我记得Laravel也有类似功能 很多框架都支持吧

xialeistudio commented 5 years ago

Yii的比较清量,扩展性高,laravel设计优美,然而性能堪忧

---原始邮件--- 发件人: "Super-yang"<notifications@github.com> 发送时间: 2019年10月24日(星期四) 中午11:38 收件人: "xialeistudio/xialeistudio.github.io"<xialeistudio.github.io@noreply.github.com>; 抄送: "lei xia"<1065890063@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [xialeistudio/xialeistudio.github.io] 解决数据库N+1查询问题 - 每天进步一点点 (#32)

Swoft是大而全的框架,挺好用的,不过还是喜欢yii这种可以自定义组件的写法, 哈哈

我记得yii2组件化的思想来自于Symfony 我记得Laravel也有类似功能 很多框架都支持吧

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

purevirtual commented 5 years ago

Yii的比较清量,扩展性高,laravel设计优美,然而性能堪忧 ---原始邮件--- 发件人: "Super-yang"<notifications@github.com> 发送时间: 2019年10月24日(星期四) 中午11:38 收件人: "xialeistudio/xialeistudio.github.io"<xialeistudio.github.io@noreply.github.com>; 抄送: "lei xia"<1065890063@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [xialeistudio/xialeistudio.github.io] 解决数据库N+1查询问题 - 每天进步一点点 (#32) Swoft是大而全的框架,挺好用的,不过还是喜欢yii这种可以自定义组件的写法, 哈哈 我记得yii2组件化的思想来自于Symfony 我记得Laravel也有类似功能 很多框架都支持吧 — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

yii2其实也够重量了 一系列的东西 laravel主要还是router还有一些其他的地方设计的有点过于学院派了 Ps: 我今天照着另外一个人的文章实现了最简版的swoole-server+yii2-app 来取代fpm 还是能实现各种功能了 我觉得swoole的主要优势就是协程和复用 不支持的话我就先多折腾几个扩展了