我有一个数据加载过程,将大量数据加载到DataTable然后执行一些数据处理,但每次作业完成DataLoader.exe(32位,具有1.5G内存限制)时不会释放所有正在使用的内存.
我尝试了三种释放内存的方法:
以下是我尝试进行测试的代码(在实际程序中,它不是递归调用的,它是由一些目录监视逻辑触发的.这段代码仅用于测试.很抱歉混淆.):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace DataTable_Memory_test
{
class Program
{
static void Main(string[] args)
{
try
{
LoadData();
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Console.ReadKey();
}
}
private static void LoadData()
{
DataTable table = new DataTable();
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
// Fill the data table to make it take about 1 G memory.
for (int i = 0; i …Run Code Online (Sandbox Code Playgroud) 我正在使用SQLSEVER 2012 Management Studio在SQLSERVER 2012 Express数据库上处理一堆非常复杂的存储过程.
例如我有一个存储过程SP1调用另一个存储过程SP2和SP2调用SP3,SP3调用SP4 ...
我希望看到的是一个图表,它可以为我提供这些存储过程与这些存储过程中使用的所有表之间的完整关系.
我已经尝试过SQL Server管理工作室提供的视图依赖项工具,但有时当我单击所选存储过程的"查看依赖项"时,它会错过后代存储过程.此外,它无法显示这些存储过程之间关系的完整画面.
有什么工具可以帮我这个吗?或者有关如何理解复杂关系存储过程的任何建议?
下面是我用来将数据从临时表 dataTable 批量复制到 Oracle 数据库中的 destTable 的代码。dataTable 有大约 200 万条记录。
using (OracleBulkCopy bulkCopy = new OracleBulkCopy(VMSDATAConnectionString))
{
try
{
foreach (OracleBulkCopyColumnMapping columnMapping in columnMappings)
bulkCopy.ColumnMappings.Add(columnMapping);
bulkCopy.DestinationTableName = destTableName;
//bulkCopy.BatchSize = dataTable.Rows.Count;
//bulkCopy.BulkCopyTimeout = 100;
int defaultSize = 5000;
int.TryParse(ConfigurationManager.AppSettings["OracleBulkCopyBatchSize"], out defaultSize);
bulkCopy.BatchSize = defaultSize;
int timeOut = 100;
int.TryParse(ConfigurationManager.AppSettings["OracleBulkCopyTimeout"], out timeOut);
bulkCopy.BulkCopyTimeout = timeOut;
Console.WriteLine("Bulk insert from {0} to {1} started at: {2}\r\nBatchSize : {3}, BulkCopyTimeout : {4} ", dataTable.TableName, destTableName, DateTime.Now.ToString("HH:mm:ss"), bulkCopy.BatchSize.ToString(), bulkCopy.BulkCopyTimeout.ToString());
bulkCopy.WriteToServer(dataTable);
Console.WriteLine("Bulk insert from {0} to …Run Code Online (Sandbox Code Playgroud) c# ×2
bulkinsert ×1
datatable ×1
diagram ×1
memory ×1
memory-leaks ×1
oracle ×1
sql-server ×1
sqlbulkcopy ×1