gpt4 book ai didi

vb.net - 如何使用C#vb.net控制内存DB消耗中的SQLite

转载 作者:行者123 更新时间:2023-12-03 19:35:49 25 4
gpt4 key购买 nike

我有100 GB的数据。我想在VB.Net中使用SQLite将其加载到内存中。我有32 GB RAM。我希望SQLite占用24 GB的RAM,而其他8 GB仍可用于其他OS任务。当它达到24 GB RAM限制时,它应该开始自动将数据刷新到某些磁盘文件中。

首先:我使用了内存数据库。

Dim cn As SQLiteConnection = New SQLiteConnection("Data Source=:memory:")


但是它消耗了31.8 GB的RAM,然后OS(Windows 7)进入并控制并开始使用虚拟内存(将数据保存到磁盘)。但这确实确实减慢了计算机的速度。简而言之,当何时加载大量数据(通过使用内存中的方法)时,SQLite会消耗掉所有内存并停止计算机。

第二:我使用临时数据库加载了数据。

Dim cn As SQLiteConnection = New SQLiteConnection("FullUri=file:")


但是,当SQLite消耗了将近2GB的RAM时,它将通过将数据刷新到文件“ C:\ Users \ Administrator \ AppData \ Local \ Temp \ etilqs_d4Fsx23dc”并开始加载下一个数据来释放它。简而言之,当加载大量数据(通过使用临时DB方法)时,它将使用非常少的RAM和更多的磁盘。

第一种情况吃掉了所有内存,第二种情况消耗了很少的RAM。我需要中间的方式应该在我自己的控件中。SQLite为24 GB RAM,操作系统为8 GB,当达到24 GB RAM限制时,它将开始自动将数据刷新到磁盘文件中。

最佳答案

要控制SQLite用于磁盘数据库的内存量,请使用PRAGMA cache_size。但是,操作系统会将所有未使用的内存用于文件缓存,因此SQLite的缓存不应设置得太大。

要加快对磁盘的写入速度(但使其与内存数据库一样不可靠),请使用PRAGMA journal_mode = OFF

关于vb.net - 如何使用C#vb.net控制内存DB消耗中的SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35551758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com