Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 26469|Відповідь: 3

[Джерело] EF обережно ставиться до випадкових даних

[Копіювати посилання]
Опубліковано 25.04.2019 17:01:42 | | | |
Сьогодні сервер зазнав атаки CC, через що сайт на IIS завис, і після перезавантаження сайт знову завис, перевірте журнал помилок сайту наступним чином:

System.Data.Entity.Core.EntityCommandExecutionException: 执行命令定义时出错。有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException: 执行超时已过期。完成操作之前已超时或服务器未响应。  ---> System.ComponentModel.Win32Exception: 等待的操作过时。


Велика кількість винятків тайм-ауту запитів призводить до зависання сайту, а всі оператори тайм-ауту запиту SQL походять від методу отримання випадкових даних, код виглядає так:

Код приблизно означає: 10 фрагментів даних випадково обираються з бази даних, якщо вони не дублюють поточний ідентифікатор.

Те, що здається простою вимогою, призвело до того, що сервер поклав слухавку! SQL-оператор, згенерований вищезазначеним кодом, виглядає так:

План впровадження такий:



Якщо база даних містить 1 мільйон даних, хіба вона не повинна спочатку взяти 999 999 даних, а потім взяти 10 даних із цих 999 999 даних?

Запитайте у великого хлопця групи DBA і отримайте відповідь: "ТакО Боже, це, мабуть, повільно, і вам потрібно багато разів повторювати це sql-твердження.



Спочатку я думав, що це проблема з EF,Насправді, якщо писати безпосередньо в SQL, немає хорошого рішення

Якщо так, будь ласка, навчіть мене!




Попередній:Відкритий проєкт HtmlAgilityPack реалізує веб-краулер C#
Наступний:Навчальні відео HCIA 2019 року
Опубліковано 25.04.2019 17:07:00 |
Дізнався
Опубліковано 26.04.2019 09:20:13 |
У програмі є десять випадкових чисел, і тоді sql у цьому числі є досконалим
Опубліковано 26.04.2019 13:08:53 |
Я навчився ~~~~~~~~~~~~~~~~
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com