امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكل عجيب كاهش سرعت در SQL 2008 R2
نویسنده پیام
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #1
مشكل عجيب كاهش سرعت در SQL 2008 R2
ما دوتا سرور داريم به اسم هاي سرور 1 و سرور 2 كه سرور 2 كانفيگ بسيار بسيار بالاتري نسبت به سرور 1 داره

بر روي سرور 1 ويندوز سرور 2003 و SQL 2000 نصب هست و بر روي سرور 2 Windows Server 2008 و SQL 2008R2

روي هر دو سرور يك بك آپ مشابه از بانك ها رو ريستور كرديم كه هيچ فرقي با هم نداشته باشند

طبيعتا روي سرور 2 كوئري ها با سرعت فوق العاده بيشتري نسبت به سرور شماره 1 اجرا مي شوند اما ...

يك كوئري كوچك و ساده كل معادلات رو زير سوال برده !

کد:
SELECT     TOP (1) E.dateemployee, E.married, E.SupportChild, E.name, E.family, E.no AS EmployeeNo, E.InsuranceNum, ea.BankNo, ea.BranchName, ea.PlaceNo,
                      ea.AccountNo, ea.IsDefult, EN.Name AS bankname, E.ITINo, ES.Year, ES.Month, E.SupportEtc AS Supportetc, ED.[Group], E.IsRetired AS isretired, ED.PostNo,
                          (SELECT     Value
                             FROM         [TOP].dbo.EntityContact
                             WHERE     (EntityNo = E.no) AND (ContactTypeNo = 9)) AS ContactValue, ED.No AS EmployeeDocNo, ES.No AS EmployeeSalaryNo, P.Name AS post,
                      E.haveinsure
FROM         [TOP].dbo.Employee AS E LEFT OUTER JOIN
                      EmpDoc AS ED ON ED.EmployeeNo = E.no LEFT OUTER JOIN
                      EmpAccount AS ea ON ea.EmployeeNo = E.no LEFT OUTER JOIN
                      [TOP].dbo.Entity AS EN ON ea.BankNo = EN.No LEFT OUTER JOIN
                      EmployeeSalary AS ES ON ES.EmployeeNo = E.no LEFT OUTER JOIN
                      [TOP].dbo.PublicRole AS P LEFT OUTER JOIN
                      [TOP].dbo.Entity AS Ent ON P.No = Ent.No ON P.No = ED.OrgPersonNo
WHERE     (E.no = 1001000000000001231) AND (ED.No IN
                          (SELECT     MAX(No) AS MNo
                             FROM         EmpDoc
                             WHERE     (DateBeginDoc <= '1391/07/15') AND (IsOk = 1)
                             GROUP BY EmployeeNo)) AND (ES.Year = '1391') AND (ES.Month = '07')
ORDER BY EmployeeDocNo DESC, ES.Year DESC, ES.Month DESC

كوئري بالا در سرور شماره 1 به سرعت و ظرف كمتر از 2 ثانيه اجرا مي شه اما در سرور شماره 2 به طرز غير قابل باوري 20 ثانيه طول مي كشه تا جواب رو ارئه بده.

هر دو سرور كوئري رو بدون خطا اجرا مي كنن و نتيجه هر دو يكسان هست ،‌ تفاوت تنها در سرعت اجراي اين دو كوئري است. بررسي كردم و مطمئن هستم سرور يك به هيچ عنوان نتيجه كوئري رو ايندكس نكرده.

بانك ها رو بارها ريستور كردم ، هر دو سرور تمام كوئري ها رو به درستي اجرا مي كنن و سرور شماره 2 هر كوئري غير از كوئري بالا رو با سرعت بسيار بالاتري نسبت به سرور 1 اجرا مي كنه اما در مورد اين كوئري خاص به طرز عجيبي كند عمل مي كنه!

حالا نظر شما چيه؟

۰۸-آبان-۱۳۹۱, ۱۷:۲۱:۰۳
وب سایت ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #2
RE: مشكل عجيب كاهش سرعت در SQL 2008 R2
من چیز خاصی ندیدم ولی تو قسمت زیر
کد:
SELECT     MAX(No) AS MNo
                             FROM         EmpDoc
                             WHERE     (DateBeginDoc <= '1391/07/15') AND (IsOk = 1)
                             GROUP BY EmployeeNo)
شما 1 مقدار برمیگردونی چه نیازی به group by هست؟

و در قسمت اول
کد:
(SELECT     Value
                             FROM         [TOP].dbo.EntityContact
                             WHERE     (EntityNo = E.no) AND (ContactTypeNo = 9)) AS ContactValue, ED.No AS EmployeeDocNo, ES.No AS EmployeeSalaryNo, P.Name AS post,
فکر نکنم این بخش از کد نیاز باشه
AS ContactValue, ED.No AS EmployeeDocNo, ES.No AS EmployeeSalaryNo, P.Name AS post,

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۰۹-آبان-۱۳۹۱, ۱۰:۰۷:۰۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Di Di
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #3
RE: مشكل عجيب كاهش سرعت در SQL 2008 R2
مبين جان ممنون از لطفت.

قسمت شماره 1 گروپ باي شده چون بايد به ازاري تك تك پرسنل يا همون EmployeeNo ها مقدار بر گردونه و صرفا داخل اين كوئري

براي يك نفر محدود شده،

در قسمت دوم هم متوجه منظورت نشدم مبين جان اين فيلدها برام ضروري هست كه نمايش بده چطور مي گي لازم نيستن؟

و البته در مورد كندي اجراي اين كوئري:

اگر در قسمت Select كوئري مقدار ED.No AS EmployeeDocNo رو حذف كنم يا اسم خروجيش رو به

مقدار ED.No AS EmployeeDocNo2 تغيير بدم مشكل بر طرف مي شه!!!

اين مشكل به طرز مرموزي مربوط به اين هست كه فيلدي با نام EmployeeDocNo داخل يكي از تيبل ها كه بهش جوين زديم

وجود داره و اگرچه در ليست سلكتمون قرار نداره اما ظاهرا الگوريتم هاي بهينه سازي كوئري در SQL2008 تو اين مورد دچار ضعف

هستند و داخل يك سري لوپ هاي وحشتناك مي شه كه اين مشكل به وجود مياد،

به نظرت به عنوان يك نقطه ضعف يا باگ سيستمي گزارشش بدم؟

۱۴-آبان-۱۳۹۱, ۱۵:۰۰:۰۷
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل در ایجاد یوز و پسورد برای بانک اطلاعاتی در SQL SERVER 2008 sepahbod 6 6,909 ۰۸-بهمن-۱۳۹۲, ۱۳:۵۷:۰۳
آخرین ارسال: sepahbod
Question attach کردن بانک 2000 در 2008 javaweb 0 2,112 ۲۹-آذر-۱۳۹۲, ۱۳:۵۸:۲۵
آخرین ارسال: javaweb
  راهنمایی در انجام Backup و Restore در SQL Server 2008 sepahbod 8 8,245 ۲۲-تير-۱۳۹۲, ۱۳:۳۴:۰۷
آخرین ارسال: sepahbod
  خطا هنگام نصب SQL Server 2008 sepahbod 3 4,360 ۲۸-فروردین-۱۳۹۲, ۲۲:۵۲:۵۸
آخرین ارسال: far_222000
  [سوال] خطا در کانکت شدن به اس کیو ال سرور 2008 ahmad_lovely 1 6,779 ۱۴-آبان-۱۳۹۱, ۱۵:۵۹:۳۵
آخرین ارسال: ahmad_lovely
  مشکل با Microsoft SQL Server 2008 Crom 8 6,980 ۰۶-مهر-۱۳۹۱, ۰۸:۰۵:۵۸
آخرین ارسال: Crom
Question مشكل با sql server _Lotus_ 2 3,639 ۱۶-دى-۱۳۹۰, ۱۷:۲۴:۱۱
آخرین ارسال: parviz2012
  آموزش SQL Server 2008 فوری toopdanlod 20 14,991 ۲۱-اسفند-۱۳۸۸, ۱۴:۳۰:۰۹
آخرین ارسال: toopdanlod
  سوال در مورد Share كردن ديتا بيس در SQL SERVER 2008 veyskarami 5 5,671 ۲۱-دى-۱۳۸۸, ۱۷:۵۸:۰۹
آخرین ارسال: veyskarami
  مشكل با يك دستور SQL siamak-s 8 11,449 ۲۲-دى-۱۳۸۴, ۱۵:۳۱:۵۱
آخرین ارسال: Soheilvb

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS