首页 新闻 会员 周边 捐助

技术问题讨论--用内存表好吗?

0
悬赏园豆:5 [已解决问题] 解决于 2023-06-02 23:19

某工的软件,基础表一开始全读到内存使用,说不这样的话频繁读取数据库,若多开几个客户端,数据库会卡死。读到内存使用就避免这个情况。他这样对吗,数据库会这么容易卡死?

tea2007的主页 tea2007 | 初学一级 | 园豆:6
提问于:2023-05-31 09:33
< >
分享
最佳答案
0

将基础表读取到内存中的做法是一种常见的性能优化方法,可以有效减少对数据库的频繁访问,提高系统的响应速度。这种做法的优势包括:

提升读取性能:内存读取速度比数据库访问速度更快,通过将数据加载到内存中,可以减少对数据库的频繁读取操作,提高系统的读取性能。

减轻数据库负载:频繁的数据库读取操作会增加数据库的负载,当多个客户端同时进行读取操作时,可能导致数据库响应变慢甚至崩溃。将数据读取到内存中可以减轻数据库的负载,提高数据库的稳定性和可靠性。

然而,是否将基础表读取到内存中并不仅仅取决于数据库会不会容易卡死这一点,还需要综合考虑以下几个因素:

内存消耗:将数据读取到内存中会占用一定的内存空间,特别是当基础表数据量较大时,可能会对系统的内存资源造成较大压力。需要确保系统具有足够的可用内存来支持这种操作。

数据一致性:如果基础表中的数据经常发生变化,例如有新增、修改或删除操作,那么将数据读取到内存中可能导致数据不一致的问题。需要考虑如何保持内存中的数据与数据库中的数据保持同步。

内存管理和缓存策略:需要设计合适的内存管理和缓存策略,包括数据更新时的同步机制、缓存过期策略等,以确保内存中的数据始终保持最新和正确。

总结来说,将基础表读取到内存中可以提高系统的读取性能和数据库的稳定性,但需要综合考虑内存消耗、数据一致性和缓存策略等因素。最好根据具体的业务需求和系统资源情况进行评估,并进行性能测试和监测,以确保该优化方案的可行性和有效性。

收获园豆:2
Technologyforgood | 大侠五级 |园豆:7530 | 2023-06-02 21:19
其他回答(4)
0

这样很好很方便啊,大大地提供了取数据的效率。
基础表,不怎么更改吧——只读的。

收获园豆:1
快乐的总统95 | 园豆:4004 (老鸟四级) | 2023-05-31 09:42
0

在基础表数据量较大且访问频繁的情况下,频繁读取数据库可能会对数据库性能造成一定的影响。如果同时有多个客户端访问数据库,并且每个客户端都频繁读取数据库,那么数据库的负载可能会非常高,从而导致数据库响应变慢甚至崩溃。

为了避免这种情况,可以考虑将基础表数据读取到内存中进行缓存。这样,每次客户端访问时,都可以直接从内存中读取数据,而不必频繁地从数据库中读取。这样可以减轻数据库的负载,提高系统的响应速度。

不过,需要注意的是,将数据读取到内存中进行缓存也可能会占用大量的内存资源,如果内存不足,也可能会导致系统响应变慢或崩溃。因此,在进行内存缓存时,需要根据实际情况进行合理的优化和配置,以确保系统的稳定性和性能。同时,还需要考虑数据的一致性和更新问题,确保缓存数据与数据库中的数据保持同步。

收获园豆:1
lanedm | 园豆:2396 (老鸟四级) | 2023-05-31 10:04

好像AI的语气

支持(0) 反对(1) mowen285 | 园豆:674 (小虾三级) | 2023-05-31 10:11

@mowen285: 哈哈好像就是AI回答的

支持(0) 反对(0) Little_Dandelion | 园豆:239 (菜鸟二级) | 2023-06-02 17:26
0

多开几个就能把数据库跑死,感觉 你们的基础表里的数据特别大吧,而且取的数据量也特别大吧,或者是查询的时候特别复杂?

绝版色狼 | 园豆:318 (菜鸟二级) | 2023-05-31 14:11

也不是呀,就是个上位机软件,所以不明白这位某工为什么这样搞,全读到内存,基础数据多就会慢

支持(0) 反对(0) tea2007 | 园豆:6 (初学一级) | 2023-05-31 17:01
0

可能是多个客户端同时访问的开销>把数据读到缓存中的开销,这数据库服务器性能是不是不太行啊

收获园豆:1
Little_Dandelion | 园豆:239 (菜鸟二级) | 2023-06-02 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册