主要观点:
- 不应过度将应用业务逻辑推到数据库中,应尽量在应用代码中处理业务逻辑,因扩展应用服务器资源比数据库服务器资源更易。
- 可将部分复杂查询放在数据库层以控制返回结果数量,但要避免给数据库带来过大负担,如可分离数据过滤与检索。
- 应避免在数据库中对返回结果进行计算,将其移至应用层,利用应用层的可用资源。
- 可将复杂连接逻辑移至应用层,减少数据库负载,提高可扩展性。
关键信息:
- 数据库擅长复杂连接、过滤等操作,但将业务逻辑放数据库会消耗更多数据库资源,更少应用服务器资源。
- 执行数据库内操作会将业务逻辑推至数据库底层,应尽量减少。
- 可通过分离过滤与检索、避免在数据库中计算等方式将业务逻辑移至应用层。
重要细节:
- 以在大型数据库表上执行复杂过滤查询为例,直接在数据库执行可能只需少量行数据,若在应用层执行则需先获取所有数据再过滤,对大型数据集不可接受。
- 可先通过初始查询获取过滤所需字段,再在应用层执行过滤逻辑,后续获取符合条件的实际数据,减少数据传输。
- 对于复杂连接,将其移至应用层可减少数据库负载,提高可扩展性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。