Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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 9999 парчета, а след това да вземе 10 парчета данни от тези 999 999 парчета?

Попитайте големия човек от групата на DBA и получете отговора: "ДаО, Боже, това сигурно е бавно и трябва да повтаряш това SQL твърдение много пъти.



Първоначално мислех, че е проблем с EF,Всъщност, ако пишеш директно в SQL, няма добро решение

Ако да, моля, научи ме!




Предишен:Проектът с отворен код HtmlAgilityPack реализира уеб краулъра на C#
Следващ:Обучителни видеа на HCIA 2019
Публикувано в 25.04.2019 г. 17:07:00 ч. |
Научих
Публикувано в 26.04.2019 г. 9:20:13 ч. |
В програмата има десет случайни числа и тогава sql в това число е перфектен
Публикувано в 26.04.2019 г. 13:08:53 ч. |
Научих ~~~~~~~~~~~~~~~~
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com