【问题标题】:Store a cache COPY of table locally SQL Server在本地存储表的缓存副本 SQL Server
【发布时间】:2011-09-09 13:14:33
【问题描述】:
  • 是否可以在本地存储表数据的缓存副本以避免在SQL Server 中传输(数据不会改变,我保证!)。那么C++, C#可以知道SQL在缓存中存储的数据,然后读取缓存中的数据,用表计算一些东西吗?

  • SQL Server and C++ or C# 之间是否有可能通过表数据的缓存内存副本进行这种通信?

    • 如果可以的话,步骤是什么?

【问题讨论】:

  • 你看过数据集吗? msdn.microsoft.com/en-us/library/…
  • mmm,不确定这是否可能,但是,所有这些都可以在 DBMS(SQL Server)中吗?另外,如果使用 DataSets,在表扫描之后,是否可以保留所有微积分内存还是缓存?

标签: c# .net c++ sql-server-2008 caching


【解决方案1】:

ADO.您需要使用 ADO.NET (Disconnected) DataSets:

1) 创建数据集

DataSet dsCustomers = new DataSet();

2) 创建一个DataAdapter,指定要获取什么数据

SqlDataAdapter daCustomers = new SqlDataAdapter(
    "select CustomerID, CompanyName from Customers", conn);

3) 填充数据集

daCustomers.Fill(dsCustomers, "Customers");

之后您可以查询您的数据集。

【讨论】:

  • 是否有可能,假设SQL表已经在内存中,访问它只读取内存?,这是为了避免再次读取表,只是内存
  • 这会将表读入内存。你只能得到一次。
  • SQL Server 不允许您直接访问表(在内存或磁盘中)。您需要通过 SQL 驱动程序。数据集在内存结构中,因此唯一的方法是将所有 SQL 数据一次性放入这些内存结构中,然后再查询它们(假设您的表数据没有像您提到的那样更改)。
  • @AKhil:您说 SQL Server 不允许直接访问,那么有没有办法知道内存地址或其他东西,或者您提到的过程是否必须执行?
  • @cMinor,即使 SQL Server 将表数据存储在内存中,也不建议您的应用程序解析所使用的内存格式等。我认为数据集方法是最接近的。此外,数据集在内存中非常快。您只需要第一次获取数据,之后您就有了内存中的数据。
猜你喜欢
  • 2013-05-02
  • 1970-01-01
  • 2019-04-29
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
相关资源
最近更新 更多