কীভাবে মাইএসকিউএল ইনসার্ট এবং আপডেট আপডেট করা যায়?


14

এই প্রশ্নটি সম্ভবত স্ট্যাকওভারফ্লোতেও জিজ্ঞাসা করা যেতে পারে, তবে আমি প্রথমে এখানে চেষ্টা করব ...

আমাদের ডাটাবেসে INSERT এবং আপডেটের বিবৃতিগুলির পারফরম্যান্স হ্রাসজনক বলে মনে হচ্ছে এবং আমাদের ওয়েব অ্যাপ্লিকেশনটিতে খারাপ পারফরম্যান্স ঘটায়।

টেবিলগুলি ইনোডিবি এবং অ্যাপ্লিকেশন লেনদেন ব্যবহার করে। জিনিসগুলিকে গতি বাড়ানোর জন্য এমন কোনও সহজ টুইট আছে কি?

আমি মনে করি আমরা হয়ত কিছু লকিংয়ের সমস্যা দেখছি, আমি এটি কীভাবে খুঁজে বের করতে পারি?


Dba.stackexchange.com এ আরও ভাল
প্যাসিরিয়ার

উত্তর:


25
  1. আপনার হার্ডওয়্যার এবং ওএস সঠিকভাবে কনফিগার করা ও সুরযুক্ত কিনা তা পরীক্ষা করুন:

    • সমস্যার উত্স (সিপিইউ / আইও / মেমরি / অদলবদ ব্যবহার)। আপনার কি প্রচুর আইওপি আছে? সিপিইউ লোড হয়? আপনার যদি প্রচুর আইওপি পড়ে থাকে তবে আপনার কাছে যথেষ্ট বড় ইনোডিবি বাফার_পুল নেই। যদি সিপিইউ লোড হয় সম্ভবত আপনার প্রশ্নগুলি যথাযথ সূচকগুলি ব্যবহার না করে পুরো টেবিল স্ক্যান করে।
    • ডিস্ক / RAID / LVM সেটআপ। কিছু নির্দিষ্ট স্থাপনার LVM- র striping ডিস্ক লোড eqalizing মাধ্যমে উপকৃত দিতে পারে (কোন হার্ডওয়্যার RAID, একাধিক LUNs সংযুক্ত)
    • আইও সিডিউলার: আপনার যখন ভাল হার্ডওয়্যার র‌্যাড কন্ট্রোলার থাকে তখন সম্ভবত নূপই সেরা। রেডহ্যাট কিছু পরীক্ষা করেছে এবং তারা বলেছে যে ওরাকল (এবং অন্যান্য ডিবি) এর জন্য সিএফকিউ সেরা পছন্দ। আপনাকে কিছু বেঞ্চমার্ক চালাতে হবে (যেমন টিপিসি-সি বা টিপিসি-ই) এবং আপনার হার্ডওয়্যারের জন্য সবচেয়ে ভাল কি চয়ন করতে হবে।
    • ভাল ফাইল সিস্টেম - ext3 ডাটাবেস নির্দিষ্ট কাজের চাপে ভাল সম্পাদন করে না। এক্সএফএস বা ওসিএফএস 2 এর চেয়ে ভাল। আপনার আবার কিছু মানদণ্ড দরকার।
    • দেখুন, যদি আপনার সিস্টেমটি অদলবদল ব্যবহার করে। অদলবদল মাইএসকিএল কর্মক্ষমতা হ্রাস করে
  2. আপনার মাইএসকিউএল / ইনোডিবি উদাহরণটি সঠিকভাবে সুরক্ষিত থাকে কিনা তা পরীক্ষা করে দেখুন:

    • বাফার পুলের আকার - মেমরিতে ক্যাশ ডেটা পৃষ্ঠাগুলি
    • ইনোডাব_ফ্লুশ_মোথারোড = ও_ডিআরইসিটি - ডাবল আইও বাফারিং এড়ান
    • ইনোডিবি লগ ফাইলের আকার বাড়ান - নিবিড় কাজের চাপ লেখার জন্য এটি কার্যকারিতা উন্নত করতে পারে। তবে মনে রাখবেন: বড় লগ ফাইলের আকারের অর্থ দীর্ঘ ক্রাশ পুনরুদ্ধার। মাঝে মাঝে কয়েক ঘন্টা !!!
    • ইনোডাব_ফ্লুশ_লগ_্যাট_আরএক্সএক্স_কমিট = 0 বা 2 - আপনি যদি এসিডি নিয়ে উদ্বেগ না করেন এবং শেষ দ্বিতীয় বা দু'বারের জন্য লেনদেন শিথিল করতে পারেন।
    • key_buffer_size - মাইআইএসএএম এর পক্ষে খুব গুরুত্বপূর্ণ, তবে এটি ডিস্ক অস্থায়ী টেবিলগুলির জন্য ব্যবহৃত হয়।
    • আপনার INNODB পরিস্থিতি দেখুন
  3. আপনার কাজের চাপ বিশ্লেষণ করুন - স্লোকোরি লগতে আপনার সমস্ত ক্যোয়ারী ধরুন এবং এতে এমকে-ক্যোয়ারি-ডাইজেস্ট চালান। আপনি tcpdump এবং maatkit ব্যবহার করে সমস্ত জিজ্ঞাসা ধরতে পারেন
    • আপনার সার্ভারের বেশিরভাগ সময় কি প্রশ্নগুলি গ্রহণ করে?
    • কোনও অস্থায়ী সারণী তৈরি করা হয়েছে, বিশেষত বড় অস্থায়ী টেবিলগুলি?
    • কীভাবে ব্যাখ্যা করবেন তা শিখুন
    • আপনার অ্যাপ্লিকেশন লেনদেন ব্যবহার করে? আপনি যখন অটোকোমিট = 1 (মাইএসকিউএলকে ডিফল্ট) দিয়ে অনুসন্ধানগুলি চালান, তখন প্রতিটি সন্নিবেশ / আপডেট ক্যোয়ারি নতুন লেনদেন শুরু করে, যা কিছু ওভারহেড করে। যদি এটি সম্ভব হয় তবে অটোকোমিট অক্ষম করা আরও ভাল (পাইথন মাইএসকিউএল ড্রাইভার অটোকোমিটটি ডিফল্টরূপে অক্ষম করা হয়) এবং সমস্ত পরিবর্তনগুলি সম্পাদনের পরে ম্যানুয়ালি কমিট সম্পাদন করে।
    • আপনার অ্যাপ্লিকেশনটি কি লুপে একই টেবিলটিতে সিরিজ সন্নিবেশ তৈরি করে? Load data infileকমান্ড সন্নিবেশ সিরিজের জন্য অনেক দ্রুত।
    • মনে রাখবেন: select count(*) from table;মায়িসমের চেয়ে ইনোডাবের পক্ষে অনেক ধীর।
    • কোন ধরণের INSERT / UPDATE প্রশ্নগুলি বেশিরভাগ সার্ভার সময় নেয়? তারা কীভাবে অনুকূলিত হতে পারে?
    • আপনার ডিবিতে যথাযথ সূচক রয়েছে কিনা তা পরীক্ষা করুন এবং প্রয়োজনে সেগুলি যুক্ত করুন।

আমাদের পরিবেশে আমাদের পরিস্থিতি ছিল, এক ধরণের আপডেট ক্যোয়ারী ধীর ছিল। ব্যাচের কাজ শেষ করার আনুমানিক সময়টি ছিল 2 দিন !!! ধীরগতির লগ বিশ্লেষণ করার পরে আমরা দেখতে পেলাম যে এই ধরণের আপডেট কোয়েরিটি শেষ করতে 4 সেকেন্ডের প্রয়োজন। ক্যোয়ারী দেখতে এমন ছিল: update table1 set field1=value1 where table1.field2=xx table2.field3=yy and table2.field4=zz। আপডেট ক্যোয়ারীটি ক্যোয়ারী নির্বাচন করতে রূপান্তর করার পরে এবং সেই নির্বাচিত ক্যোয়ারিতে ব্যাখ্যাটি চালানোর পরে আমরা জানতে পারি যে এই ধরণের কোয়েরি সূচকটি ব্যবহার করে না। যথাযথ সূচক তৈরির পরে আমরা আপডেট ক্যোয়ারী এক্সিকিউশন সময়কে মিলিসেকেন্ডে কমিয়ে দিয়েছিলাম এবং পুরো কাজটি দুই ঘণ্টারও কম সময়ে শেষ হয়েছিল।

কিছু দরকারী লিঙ্ক:


সমস্ত যাচাই সূচক আগে। "টেবিলগুলি বড় হওয়ায় আমরা সূচকগুলিকে অবিচ্ছিন্ন করি না" এর মতো এসএমইএলগুলি ডিগ্রেড করা।
টমটম

5

ডিফল্ট নির্দোষDB কনফিগারেশনের সাহায্যে আপনি কতটা দ্রুত লিখে এবং ডিস্কে লেনদেন ফ্লাশ করতে পারবেন তার মধ্যে সীমাবদ্ধ থাকবেন। আপনি যদি কিছুটা এসিডি হারাতে ডিল করতে পারেন, তবে ইনোডাব_ফ্লুশ_লগ_এট_আরটিএক্স_কমিট পরীক্ষা করুন। লিখতে 0 তে সেট করুন এবং প্রতি সেকেন্ডে লগটিতে ডিস্কে ফ্লাশ করুন। প্রতিটি কমিট লিখতে এবং ফ্লাশ করতে 1 (ডিফল্ট) এ সেট করুন। প্রতিটি কমিটের পরে লগ ফাইলটিতে লিখতে 2 তে সেট করুন তবে প্রতি সেকেন্ডে একবারে ফ্লাশ করুন।

যদি আপনি 1 টি লেনদেন হারানোর সাথে মোকাবিলা করতে পারেন তবে লেখার পারফরম্যান্সকে বিস্তৃত করার একটি দুর্দান্ত উপায় হতে পারে।

এছাড়াও, আপনার ডিস্কগুলি কী করছে সেদিকে মনোযোগ দিন। RAID 10> একটি অতিরিক্ত ডিস্কের জন্য লেখার জন্য RAID 5।


1

লকিংয়ের সমস্যাগুলি সংযোগের স্থিতিগুলিতে অন্তর্ভুক্ত থাকবে show full processlist;

my.cnfএবং মাইএসকিউএল ডকুমেন্টেশনের মাধ্যমে পড়ুন । কনফিগারেশন বিকল্পগুলি খুব ভাল নথিভুক্ত করা হয়।

সাধারণভাবে বলতে গেলে, আপনি যতটা সম্ভব মেমরিতে যতটা সম্ভব প্রক্রিয়া করতে চান। ক্যোয়ারী অপ্টিমাইজেশনের জন্য, এর অর্থ অস্থায়ী সারণীগুলি এড়ানো। সূচকের যথাযথ প্রয়োগ।

টিউনিং আপনার পছন্দসই ডাটাবেস ইঞ্জিন এবং অ্যাপ্লিকেশন আর্কিটেকচারের জন্য নির্দিষ্ট হতে চলেছে। ইন্টারনেট সন্ধানের দূরে রয়েছে প্রচুর সংস্থান।



0

ইনোডিবি বেশ ভাল ইঞ্জিন। তবে এটি 'টিউন' হওয়ার উপর নির্ভর করে। একটি জিনিস হ'ল যদি আপনার সন্নিবেশকারীগুলি প্রাথমিক কীগুলি বাড়ানোর ক্রম না করে তবে নির্দোষ ডিবি মাইআইএসএএম থেকে কিছুটা বেশি সময় নিতে পারে। এটি সহজেই একটি উচ্চতর ইনোডাব_বফার_পুল_সাইজ সেট করে কাটিয়ে উঠতে পারে। আমার পরামর্শটি আপনার মোট র‌্যামের 60-70% এ সেট করা। আমি এখন উত্পাদনে এ জাতীয় 4 টি সার্ভার চালিয়ে যাচ্ছি, এক মিনিটে প্রায় 3.5 মিলিয়ন সারি .োকানো। ইতিমধ্যে তাদের কাছে প্রায় 3 টেরাবাইট রয়েছে। InnoDB এটি হতে হয়েছিল, অত্যন্ত একত্রে সন্নিবেশ করানোর কারণে। প্রবেশের গতি বাড়ানোর আরও উপায় আছে। এবং আমি কিছু বেঞ্চমার্ক করেছি।


0

আমি কীভাবে ওয়েব অ্যাপ্লিকেশনে মাইএসকিউএলে পারফরম্যান্সের সমস্যাগুলি সন্নিবেশ করানো এবং আপডেট করব তা কেবল জাভাতে একবার অটো-কমিট এবং পরিবর্তনগুলি অক্ষম করে। যেমনটি মাইএসকিএল ডকুমেন্টেশনে প্রস্তাবিত।

মাইএসকিউএল ডক্স

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