Tôi đang đọc 1 triệu bản ghi từ Oracle DB bằng .Net và Java. Trong. Net Tôi đang sử dụng ODP.Net, trong Java client ojdbc6 mỏng. Trong. Net đọc dữ liệu mất khoảng 10 giây, và trong Java phải mất gần 2 phút. Tại sao có sự khác biệt lớn như vậy?Đọc dữ liệu từ Oracle DB bằng .Net nhanh hơn 10 lần so với sử dụng Java
Đây là một mã số:
Net:
try
{
DateTime dt1 = DateTime.Now;
OracleConnection con = new OracleConnection();
con.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myService)));User Id=myId;Password=myPass;";
con.Open();
string cmdQuery = "SELECT * FROM DROPME";
OracleCommand cmd = new OracleCommand(cmdQuery);
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
int i = 0;
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Object o1 = reader.GetValue(0);
Object o2 = reader.GetValue(1);
Object o3 = reader.GetValue(2);
Object o4 = reader.GetValue(3);
Object o5 = reader.GetValue(4);
Object o6 = reader.GetValue(5);
Object o7 = reader.GetValue(6);
i++;
}
DateTime dt2 = DateTime.Now;
double elapsed = (dt2 - dt1).TotalSeconds;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Java:
try
{
long t0 = System.currentTimeMillis();
oracleDataSource = new OracleDataSource();
oracleDataSource.setURL("jdbc:oracle:thin:myId/[email protected]:myPort:myService");
Connection connection = oracleDataSource.getConnection();
PreparedStatement statement = connection.prepareStatement("SELECT * FROM DROPME");
ResultSet result = statement.executeQuery();
int i = 0;
while (result.next())
{
result.getObject(1);
result.getObject(2);
result.getObject(3);
result.getObject(4);
result.getObject(5);
result.getObject(6);
result.getObject(7);
i++;
}
long t1 = System.currentTimeMillis();
long elapsed = (t1 - t0)/1000;
int t = 0;
}
catch (Exception ex)
{
ex.printStackTrace();
}
EDIT: setFetchSize() đã làm công việc, cảm ơn.
chỉ đoán: trong java bạn đang sử dụng chỉ là một JDBC-lái xe với "bất kỳ mức độ", trong .net một khách hàng bản địa chuyên dùng ... nhưng, nói chung, .net là nhanh hơn;) – TheHe
Tôi nghĩ bạn đang bắt đầu với một tiền đề không hoàn thiện: Java có thể nhanh chóng. –