我正在Linux平台上编写一个C++程序。这个程序类似于linux-mini-navicat,它可以连接到不同的数据库(postgresql,mysql,mssql,oracle)并执行sql。并且该程序启动一个接口(interface)服务器(thrift)用于客户端连接并执行sql命令。

当我执行“select * from table”时,其中有大量数据,可能是一百万或一千万或更多,我的程序在将数据返回给客户端之前被linux终止,因为内存不足。

我很好奇 navicat 如何实现这一目标,以及如何在我的程序中实现这一目标?

希望我能清楚地表达我的问题。

请您参考如下方法:

通常不需要一次性从大表中检索(并保存在内存中)所有数据。如果您正在显示查询结果,您可以获取足够的数据来填充屏幕上的表格,然后在用户滚动表格时下载它。如果您开发一些分析算法,您仍然可以分块分析表数据。请参阅有关数据库引擎的可滚动游标的文档。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!