Täna sai server CC-rünnaku osaliseks, mis põhjustas IIS-i veebilehe hangumise, ning pärast taaskäivitamist jäi veebileht uuesti kinni, vaata veebilehe vealogi järgmiselt:
System.Data.Entity.Core.EntityCommandExecutionException: 执行命令定义时出错。有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException: 执行超时已过期。完成操作之前已超时或服务器未响应。 ---> System.ComponentModel.Win32Exception: 等待的操作过时。
Suur hulk päringu ajapiirangu erandeid põhjustab veebilehe hangumise ning päringu ajapiirangu SQL-laused pärinevad juhuslike andmete võtmise meetodist, kood on järgmine:
Kood tähendab umbes: 10 andmetükki valitakse juhuslikult andmebaasist, kui need ei dubleeri praegust ID-d.
Tundub, et lihtne nõue on põhjustanud serveri kõne katkestamise! Ülaltoodud koodi poolt genereeritud SQL-lause on järgmine:
Rakendusplaan on järgmine:
Kui andmebaasis on 1 miljon andmetükki, kas siis ei peaks esmalt võtma 999 999 andmetükki ja siis 10 neist 999 999 andmetükist?
Küsi dba grupi suurelt mehelt ja saa vastus: "JahOh jumal, see peab olema aeglane ja sa pead seda SQL-lauset mitu korda kutsuma.
Alguses arvasin, et see on EF probleem,Tegelikult, kui kirjutad otse SQL-is, pole head lahendust。
Kui jah, siis palun õpeta mind!
|