Performanceোকান কর্মক্ষমতা লোড অধীনে: কেন?


19

আমার কাছে কোডের একটি টুকরা রয়েছে যা অত্যন্ত অস্বীকৃত টেবিলগুলিতে সন্নিবেশ সম্পাদন করে। টেবিলগুলিতে ~ 100 থেকে 300+ অবধি কলামগুলির সংখ্যা রয়েছে। এটি এসকিউএল সার্ভার 2008 আর 2, যা উইন্ডোজ সার্ভার 2008 এ চলছে running

প্রতিটি সন্নিবেশ একই লেনদেনের অধীনে বেশ কয়েকটি টেবিল সন্নিবেশ নিয়ে গঠিত। কিছু সন্নিবেশগুলি এনহাইবারনেট দ্বারা প্রস্তুত করা হয়, তবে কিছু কিছু হতে পারে না তবে সেগুলি সমস্ত কিছু একই লেনদেনের অধীনে।

আমি যখন বার বার সন্নিবেশ সম্পাদন করে এমন কোনও কোডের টুকরো কল করে 500 বার বলার জন্য সন্নিবেশ সম্পাদন করি তখন আমি গড়ে ~ 360 এমএস পাই।

উদ্ভট বিটটি হ'ল, যখন আমি 4 টি প্রসেস (একই সাথে 4 টি পৃথক কমান্ড থেকে উইন্ডোজ সার্ভারের অধীনে অনুরোধ জানানো 4) ব্যবহার করে টেস্ট কোডটি চালিত করি, তখন কল প্রতি সন্নিবেশ কর্মক্ষমতা আরও ভাল হয়। আমি বিস্ফোরণগুলি দেখতে পাই যা 90 এমএস (প্রায় এক্স 4 দ্রুত) হিসাবে দ্রুত যায়। আমি কোড থেকে সন্নিবেশের সময়টি পরিমাপ করছি।

যেহেতু 4 টি প্রক্রিয়া একে অপর সম্পর্কে কিছুই জানে না, তাই আমি ধরে নিচ্ছি যে এটির এসকিউএল সার্ভারের সাথে কিছু করার আছে, তবে কেন আমার একেবারে কোনও ধারণা নেই। আমি কেন এটি ঘটছে তা জানতে চাই এবং যদি এমন কোনও কনফিগারেশন থাকে যা সন্নিবেশগুলি ঘন ঘন না হয় তবে আমাকে একই কার্য সম্পাদন করতে দেয়।

ডিবি স্তরে কী চলছে তা বোঝার জন্য এসকিউএল সার্ভার মনিটরিং পদ্ধতি সম্পর্কিত পরামর্শগুলি সমানভাবে স্বাগত।

উত্তর:


15

একটি সম্ভাব্য কারণ হ'ল চারটি সমবর্তী প্রক্রিয়া লগ ফ্লাশের আরও অনুকূল প্যাটার্ন উত্পন্ন করে - সাধারণত অর্থ যে প্রতিটি লগ ফ্লাশ একক এক্সিকিউটিভ প্রসেসের ক্ষেত্রে এর চেয়ে বেশি ডেটা লিখে।

লেনদেনের লগ থ্রুপুট / ফ্লাশের আকার কোনও ফ্যাক্টর কিনা তা নির্ধারণ করতে, মনিটর করুন:

  • sys.dm_os_wait_stats জন্য WRITELOGএবং LOGBUFFERঅপেক্ষা করছে
  • sys.dm_io_pend_io_O পারফরম্যান্সের জন্য অনুরোধ করে
  • পারফরম্যান্স মনিটরের কাউন্টার (বা sys.dm_os_performance_counters ) এর জন্য:
    • লগ বাইটস ফ্লাশ / সেকেন্ড
    • লগ ফ্লাশ / সেকেন্ড
    • লগ ফ্লাশ অপেক্ষা করুন সময়

অভ্যন্তরীণ সীমা অতিক্রম করা জন্য অনুসন্ধান করুন। এসকিউএল সার্ভার ২০০৮ আর 2-তে, 64-বিট সংস্করণে সর্বোচ্চ 32 টি বকেয়া (অ্যাসিনক্রোনাস) লগ ফ্ল্যাশ আই / ওএস থাকতে পারে (32-বিটের উপর কেবল 8)। 3840KB এর বকেয়া আইওতে মোট আকারের সীমাও রয়েছে।

আরও তথ্য এবং আরও পড়া:


12

পলওহাইট সবকিছুই বলেছেন, আরও ...

যদি আপনার জায়গায় বিদেশী কী থাকে তবে প্রতিটি সন্নিবেশকে রেফারেন্সযুক্ত প্রতিটি টেবিলের জন্য একটি চেক করা দরকার। আপনি যেমন আমার মতো শোনেন তেমনি আপনি কেবল 360 মিমি পাচ্ছেন যা আমার কাছে ধীর লাগে feels

যাইহোক, এই টেবিলগুলি পরীক্ষা করে ডিস্কে লোড না করে, ইতিমধ্যে র‌্যামে থাকা ডেটা থাকার মাধ্যমে ব্যাপকভাবে সহায়তা করা হয়।

আমার কাছে মনে হচ্ছে র‌্যামে ডেটা লোড করা আপনার মৃত্যুদন্ডের একটি গুরুত্বপূর্ণ অংশ এবং এটি কেবল একবার ঘটতে হবে।

এটি কার্যকর পরিকল্পনা ক্যাচিংও হতে পারে এবং আপনার প্রশ্নগুলি প্রথমবার সংকলন করা দরকার, পরবর্তী কলগুলি সেই পর্বটি এড়াতে সক্ষম হবে।


ধন্যবাদ রব আমার পারফরম্যান্স সমস্যাটি সন্নিবেশকালে ব্যবহৃত উচ্চ সংখ্যক টেবিলের সাথে সম্পর্কিত। কোনও বিদেশী কী নেই, আমি পারফরম্যান্সের কারণে এগুলি সরিয়ে দিয়েছি এবং আমার মডেল এবং ডোমেন প্রয়োজনীয়তা আমাকে এটি করতে দেয়। আমি র‌্যামে ডেটা লোড করছি না, এবং আমার সন্নিবেশগুলি আগত অনুরোধগুলির দ্বারা গতিশীল আকারে তৈরি হয়, যা সর্বদা পরিবর্তিত হয়। আমি মূলত ওলটিপি-র জন্য স্টার / স্নোফ্লেক (ইশ) স্কিমার অপব্যবহার করছি এবং আমার সেরা পারফরম্যান্সটি পেয়ে যাওয়ার চেষ্টা করছি।
mahonya

2
@ মাহনিয়া, যদিও আপনি স্পষ্টভাবে র‌্যামে ডেটা লোড করছেন না তবুও এসকিউএল সার্ভার অবশ্যই সন্নিবেশ অপারেশন সম্পাদন করার আগে প্রয়োজনীয় সূচক এবং ডেটা পৃষ্ঠাগুলি বাফার ক্যাশে প্রথমে পড়তে হবে। সমবর্তী inোকানো থ্রেডগুলিতে ক্যাশে উষ্ণ করার প্রভাব থাকতে পারে যে এক থ্রেডে পড়ার ওভারহেড এবং অন্যটি ক্যাশে থাকা ডেটা অ্যাক্সেস করতে পারে।
ড্যান গুজম্যান

ধন্যবাদ @ ডানগুজম্যান - এবং হ্যাঁ, মহোনিয়া, আপনার ক্যাশে সুন্দরভাবে গরম হওয়ার প্রবল সম্ভাবনা রয়েছে। এটি আপনার শারীরিক আই / ও-র কারণে আপনার বাধা সৃষ্টি করে কিনা তা দেখার জন্য আমি আপনার অপেক্ষাগুলি যাচাই করব।
রব Farley

ধন্যবাদ @ ডানগুজম্যান রাজি, ডিবি সূচক ক্যাশে স্পিডআপ এমন কিছু যা পোস্টগ্র্যাসে দেখতে অভ্যস্ত আমি সম্ভবত রবের ইনপুটটিকে ভুল বুঝেছিলাম।
mahonya

-3

কিছু সার্ভার / সিপাস / ওএস এর নিদর্শনগুলি মনে রাখে। ক্যাশে মত

যেহেতু আপনি একই জিনিসটি 4 বার করছেন, আমি নিশ্চিত যে এটি কোণগুলি কেটে ফেলতে পারে এমন বিভিন্ন উপায় রয়েছে, যা আমি অনুমান করছি যে এটি আপনি প্রথম উপায়ে করেন, এটি এটিকে একটি দীর্ঘ প্রক্রিয়া (উদাহরণ 1) হিসাবে মনে করে তবে দ্বিতীয় ভাবে এটি পুনঃব্যবহৃত কোডটি দেখে এবং এটি ক্যাশের মতো চালায় (উদাহরণ 2) বা এটি প্রথম প্রক্রিয়া হতে পারে এটিতে সমস্ত মাপসই করা (র্যাম উদাহরণ 3)।

উদাহরণ 1: 0111110000110111110000111011111000011110111110000

উদাহরণ 2: 0111110000 | 11 | 0111110000 | 111 | 0111110000 | 1111 | 0111110000

উদাহরণ3: 0111110000011111000001111100000111110000 উদাহরণ3: লুপ: 0111110000

আমি জানি উবুন্টু সার্ভার বারবার মাইএসকিএল কোয়েরি করে এটি করে। আমি তাদের ক্যাশে সংরক্ষণ করতে পারি, যদিও সময়ের মধ্যে কেবলমাত্র পার্থক্যটি 10-40mms তবে এটি যোগ করে। আমি যখন স্কুলে ছিলাম সেখানে এমন ক্লাস ছিল যা দেখিয়েছিল যে আপনাকে প্রোগ্রাম তৈরি করতে হবে (পার্ল / পিএইচপি) দ্রুত সেই ক্যাশেটি ব্যবহার করতে হবে।

তবে এটি প্রোগ্রামের উপর নির্ভর করে, কোন ভাষা এটি, এটি কী সংকলন করা হয়েছে বা কীভাবে এটি প্রোগ্রাম করা হয়েছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.