그래서 데이터베이스에 데이터가 나타나는 즉시 데이터베이스에서 데이터를 가져 오려고합니다. 현재 원하는 정보를 가져 오는 선택 쿼리를 사용하여 매초 타이머를 실행하도록하여이 작업을 수행하고 있습니다. 그러나 이렇게하면 프로그램이 매초마다 상당히 지연되므로 정말 나빠 보입니다.
제 질문은 데이터베이스가 업데이트되는 즉시 데이터를 얻는 더 좋은 방법이 있습니까? 아니면 매초 지연 스파이크를 생성하지 않도록이 작업을 수행하는 방식을 최적화하는 더 좋은 방법이 있습니까?
private void updateTimer_Tick(object sender, EventArgs e)
{
string mySqlConnection = "<connection_string>"; //left out for security purposes
MySqlConnection connection = new MySqlConnection(mySqlConnection);
List<String> id = new List<String>();
List<String> source = new List<String>();
List<String> message = new List<String>();
using (connection)
{
connection.Open();
MySqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT id, source, message FROM Table WHERE target = @address";
command.Parameters.AddWithValue("@address", ipAddress);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
id.Add(reader.GetString(0));
source.Add(reader.GetString(1));
message.Add(reader.GetString(2));
}
command.Parameters.Clear();
connection.Close();
}
}
테이블이 업데이트되었는지 확인하려면 다음을 수행하십시오.
SHOW TABLE STATUS like 'tablename';
그런 다음 업데이트 필드를 찾아야합니다.
if (dr.Read())
{
if (dr["Update_time"] != null || dr["Update_time"] != System.DBNull.Value)
{
result = (DateTime) dr["Update_time"];
}
}
이것을 마지막 결과와 비교하여 그들이 다른지 확인하십시오.
이것은 DB와 응용 프로그램에서 덜 집중되어야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다