PostgreSQL এ performanceোকানোর জন্য সেরা ফাইল সিস্টেমটি কী?


20

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

আপনি যদি সাধারণ ফাইল সিস্টেম / ডাটাবেস কর্মক্ষমতা সম্পর্কিত কোনও প্রশ্ন খুঁজছেন তবে এই পোস্টে কিছু ভাল তথ্য রয়েছে।

তবে, আমি যতটা সম্ভব পারফরম্যান্স পড়ার বিপরীতে sert োকানো পারফরম্যান্স সম্পর্কে যতটা পরামর্শ পেতে চাই । দুর্দান্ত উত্তরের জন্য ধন্যবাদ!


7
সবচেয়ে ভাল ফাইল সিস্টেম আরও মেমরি হবে? ;)
ওসকার ডুভোর্ন

2
অস্কারের জন্য +1 আমরা কেবল একটি সার্ভার কনফিগারেশন থেকে গিয়েছিলাম যেখানে র‌্যাম একটি নতুন মেশিনে ডিবির মোট আকারের ~ 33% ছিল যেখানে মোট র‌্যাম ডিবি আকারের চেয়ে বেশি ছিল। এখন আমরা স্মরণে পুরো ডিবি ক্যাশে রাখতে পারি। আমাদের ধীরতম এসকিউএল ক্যোয়ারী এখন 2 মাত্রার দ্রুততার আদেশ faster
কেভিনআর

উত্তর:


14

গ্রেগ স্মিথের "পোস্টগ্রিস্কল উচ্চ পারফরম্যান্স" এর একটি অনুলিপি কিনুন। এটি একটি দুর্দান্ত বই এবং দুটি বা আরও অধ্যায়ে ডিস্ক হার্ডওয়্যার এবং ফাইল সিস্টেম সম্পর্কিত files আপনি অনেক কিছু শিখবেন।

সংক্ষেপে: কোন সংক্ষিপ্ত উত্তর নেই।

তবে আমি সংক্ষেপে চেষ্টা করব:

  • আপনি কী করছেন তা না জানা পর্যন্ত এক্স 2 ব্যবহার করবেন না।
  • ext3 সহ fsync কলগুলির কারণে চেকপয়েন্ট স্পাইক থেকে সাবধান থাকুন, পৃষ্ঠা 113 এবং 82 এবং 79 পৃষ্ঠা দেখুন
  • ext4 বা xfs ব্যবহার করুন
  • অন্যান্য বিকল্প আছে

তবে আপনি কী এফএস ব্যবহার করবেন তা সত্যিই নিজেকে জিজ্ঞাসা করছেন, আপনার বইটি পড়া উচিত!


4
সম্মত হন, এটি গ্রেগটি খুব ভাল বিষয়টিকে সাজিয়ে তোলে। পাকটপব.ব.স.স . / f / ডিফল্ট / ফাইলস / at- তে একটি নমুনা অধ্যায় রয়েছে যদি আপনি বইটি ধার নেওয়া বা কেনার আগে উত্সাহ পেতে চান।
সাইরাসাস

1
মজার কথা, যখন আমার এই সমস্যা ছিল তখন বইটির অস্তিত্ব ছিল না। গ্রেগ সেই বইটিতে যে প্রচেষ্টা করেছে তার জন্য আমি এখন সত্যই কৃতজ্ঞ।
ইলিয়াস

এই দুর্দান্ত কাজের প্রতি সম্মান জানাতে আমি আর একটি অনুলিপি কিনেছি :-)
জান্নিং

6

প্রথমত, আপনি প্রথমে একটি নির্ভরযোগ্য ফাইল সিস্টেম এবং দ্রুত একটি সেকেন্ড চান। যা কিছু বিকল্পকে বাতিল করে দেয় ...

পারফরম্যান্স টেস্টিং দেখায় যে প্রায়শই এক্সএফএস সেরা পারফরম্যান্স দেয়। একবার আপনি ডিস্কের খুব কাছাকাছি থেকে সম্পূর্ণ দৃশ্যে পৌঁছে যাওয়ার সাথে কিছু স্থিতিশীলতার সমস্যা রয়েছে তবে আপনি যতক্ষণ না এটি পর্যবেক্ষণ করছেন এটি আপনাকে কিছুটা আরও ভাল পারফরম্যান্স দেবে give

তাত্ত্বিকভাবে আপনার pg_xlog ডিরেক্টরিতে জার্নালিং ফাইল সিস্টেমের দরকার নেই, তবে গতির পার্থক্য সাধারণত এতটা ছোট তবে এটি মূল্যবান নয়। ডেটা ডিরেক্টরিগুলির জন্য, আপনার কাছে সর্বদা একটি মেটাডেটা জার্নালিং ফাইল সিস্টেম থাকা উচিত।


4
আপনি কোনও ডাটাবেস সঞ্চয় করতে এক্সএফএস ব্যবহার করতে / না / ব্যবহার করতে চাইতে পারেন, কারণ এটি (যখন প্রয়োজন হবে) এটি পুনরুদ্ধার করতে পারে না এমন ব্লকগুলি শূন্য করবে।
অ্যাভেরি পেইন

4

ডাটাবেস পরিচালন সিস্টেমগুলি নিজস্ব জার্নালিংকে ডাটাবেস লগগুলির মাধ্যমে প্রয়োগ করে, সুতরাং একটি জার্নালড ফাইল সিস্টেমে এ জাতীয় ডিবিএমএস ইনস্টল করা দুটি পদ্ধতির মাধ্যমে কর্মক্ষমতা হ্রাস করে:

  1. অপ্রয়োজনীয় জার্নালিং ডিস্ক ক্রিয়াকলাপের পরিমাণ বাড়িয়ে তোলে

  2. শারীরিক ডিস্ক লেআউটটি খণ্ডিত করা যেতে পারে (যদিও কিছু জার্নালিং ফাইল সিস্টেমে এটি পরিষ্কার করার ব্যবস্থা আছে)।

  3. প্রচুর ডিস্ক ক্রিয়াকলাপ জার্নাল পূরণ করতে পারে, ফলে উদ্দীপ্ত 'ডিস্ক পূর্ণ' শর্ত হয়ে থাকে causing

আমি কিছু বছর আগে একটি উদাহরণ দেখেছি যেখানে এইচপি / ইউএক্স বাক্সে বায়ান ইনস্টলেশনতে এলএফএস ফাইল সিস্টেমে এটি করা হয়েছিল। সিস্টেমে অবিচ্ছিন্ন পারফরম্যান্স এবং ডেটা দুর্নীতির সমস্যাগুলি ছিল যা কেউ যদি না পরীক্ষা না করে অবধি নির্ধারিত হয়ে যায় যে ফাইল সিস্টেমগুলি এলএফএসের সাথে ফর্ম্যাট করা না থাকে।

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

কিছু ডাটাবেস পরিচালন সিস্টেম কাঁচা ডিস্ক পার্টিশনগুলি বন্ধ করে দিতে পারে। এটি প্রচুর স্মৃতিশক্তি সহ আধুনিক সিস্টেমে পারফরম্যান্স লাভের বিভিন্ন ডিগ্রি দেয়। ফাইল সিস্টেমের মেটাডেটা ক্যাশে করার জন্য কম স্থানের সাথে পুরানো সিস্টেমে ডিস্ক I / O- তে সঞ্চয়গুলি যথেষ্ট তাৎপর্যপূর্ণ ছিল। কাঁচা পার্টিশনগুলি সিস্টেম পরিচালনা করা আরও শক্ত করে তোলে তবে সর্বোত্তম কার্য সম্পাদন সরবরাহ করে।

RAID-5 ভলিউম RAID-10 ভলিউমের তুলনায় ওভারহেড লিখতে পারে, সুতরাং প্রচুর লেখার ট্র্যাফিক সহ একটি ব্যস্ত ডাটাবেস একটি RAID-10 এ আরও ভাল (প্রায়শই অনেক ভাল) সঞ্চালন করে। লগগুলিতে ডেটাতে শারীরিকভাবে পৃথক ডিস্ক ভলিউম রাখা উচিত। যদি আপনার ডাটাবেসটি বড় হয় এবং বেশিরভাগই কেবলমাত্র পঠিত হয় (যেমন একটি ডেটা গুদাম) তবে এটি RAID-5 ভলিউমে রাখার একটি মামলা হতে পারে যদি এটি লোড প্রক্রিয়াটিকে অযাচিতভাবে কমিয়ে না দেয়।

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


জার্নালিং ডেটা কর্মক্ষমতা হ্রাস করে; জার্নালিং মেটাডেটার সর্বনিম্নতম সর্বনিম্ন প্রভাব থাকতে হবে এবং সম্ভবত প্রায় কোনওটিই নয়। জার্নালিং না মেটাডাটা অচিন্তনীয়।
নিক্সার

আমি মনে করি আপনি নিবন্ধটি ভুল বুঝেছেন। যে কোনও ফাইল সিস্টেমে ফাইল সিস্টেমের মেটাডেটা রয়েছে এবং যে কোনও ডিস্ক ট্র্যাফিক এটি পড়তে বা লিখতে জড়িত। আধুনিক কম্পিউটারগুলিতে এই ফাইল সিস্টেম মেটাডেটা সহজেই ক্যাশে করার জন্য পর্যাপ্ত র‍্যাম থাকে তবে পুরানো মেশিনগুলি তা করেনি। এর অর্থ এই যে ডিস্ক অ্যাক্সেসগুলি ফাইল সিস্টেমের মেটাডেটা পড়ার বা আপডেট করার জন্য উল্লেখযোগ্যভাবে অতিরিক্ত I / O ওভারহেড (ওরাকল-এর টাইট-কোটড ফিগারটি কাঁচা পার্টিশনের উপর 30% পারফরম্যান্স হিট করেছিল) ব্যয় করেছিল। আরও র‌্যামযুক্ত একটি আধুনিক সিস্টেমে ফাইল সিস্টেমের মেটাডেটা ক্যাশে হওয়ার সম্ভাবনা বেশি থাকে, তাই ওভারহেড কম হয়।
কনসার্নড

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

3

আমি এ জাতীয় বিস্তারিত প্রতিবেদন করেছি তবে এটি কেবল ফরাসি ভাষায় । আপনি যদি ফ্রেঞ্চ পড়েন বা স্বয়ংক্রিয় অনুবাদ সরঞ্জামগুলিতে খুশি হন ... আপনি পদ্ধতিটি পুনরায় ব্যবহার করতে পারেন এবং এটি নিজের জন্য চালাতে পারেন।

এক্সিকিউটিভ সংক্ষিপ্তসার: আমি pgbench ব্যবহার। লিনাক্স আই / ও সিডিউলারটির পারফরম্যান্স এবং ফাইল সিস্টেমের জন্য খুব কম গুরুত্ব রয়েছে। সুতরাং, আপনি যদি তাড়াহুড়া করেন তবে কেবলমাত্র ডিফল্টটি বেছে নিন। আমি জেএফএস বেছে নিয়েছি।


2

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


আই / ও সিডিউলার পরিবর্তন করার সময় আমার মানদণ্ডগুলিতে খুব সামান্য পরিবর্তন দেখা গেছে, সম্ভবত প্রতিটি ডিবিএমএসের নিজস্ব সময়সূচী রয়েছে।
bortzmeyer

মাইএসকিউএল ডেডলাইন শিডিয়ুলার ব্যবহার করা থেকে উচ্চ লোড অধীনে অনেক ভাল কপি করে।
ডেভিড প্যাশলে

2

আমি কয়েক মাস আগে কিছু পরীক্ষা করেছি:

আমার একটি ছোট পরীক্ষার প্রোগ্রাম ছিল যা 50 টি থ্রেড তৈরি করেছিল, যেখানে প্রতিটি থ্রেড একই টেবিলে 1000 টি (বা এটি 10000 ছিল) সারি .োকানো হয়েছিল।

  • EXT3 এবং একটি 4 ডিস্ক RAID5 এর ডাটাবেস সহ এটি 50 সেকেন্ড নিয়েছিল।
  • রামডিস্কে টেবিল সহ (টেবিলস্পেস ব্যবহার করে) এটি এখনও 50 সেকেন্ড সময় নিয়েছিল। এটি দ্রুত না হওয়ার কারণটি হ'ল pg_xlog ডিরেক্টরিতে সমস্ত কিছু লগইন করা আছে যেখানে এখনও একই রেড 5 রয়েছে।
  • আমি pg_xlog একটি 4 ডিস্ক RAID0 (স্ট্রাইপ) এ স্থানান্তরিত করেছি এবং একই প্রোগ্রামটি 40 সেকেন্ডে চালিত।
  • পরীক্ষার উদ্দেশ্যে আমি pg_xlog কে রামডিস্কে স্থানান্তরিত করেছি এবং EXT3 4 ডিস্ক RAID- এ সমস্ত কিছু রেখেছিলাম। প্রোগ্রামটি 5 সেকেন্ডেরও কম পরে শেষ হয়েছিল।

তবে সফ্টওয়্যার র‌্যামডিস্কে pg___xlog থাকা কোনও বিকল্প নয়: আপনি যদি pg_xlog ডিরেক্টরি পোস্টের বিষয়বস্তু হারিয়ে ফেলেন তবে আরম্ভ হবে না। (তবে ব্যাটারি ব্যাকআপ সহ এমন হার্ডওয়্যার র‌্যামডিস্ক রয়েছে যা আগ্রহী হতে পারে))

আইএমএইচও: ডাটাবেস ফাইলগুলির জন্য আপনি সবচেয়ে বেশি স্বাচ্ছন্দ্যযুক্ত ফাইলসাইটিটি ব্যবহার করুন। আপনার কাছে থাকা দ্রুততম ডিভাইসে pg_xlog (একটি সিমিলিংক সহ ডকুমেন্টেশন দেখুন) সরান।


1
pgbench অনুরূপ কিছু করে এবং বেশিরভাগ ইনস্টল সহ অন্তর্ভুক্ত থাকে।
অ্যাভেরি পেইন

0

আমি মনে রেখে দেখেছি যে একটি টুইটযুক্ত ফ্রিবিএসডি আপনাকে অন্য ওএসের বিপরীতে কিছুটা আরও বেশি পারফরম্যান্স দেবে। যদিও আমি নিশ্চিত যে এই তথ্যটি পুরানো এবং সম্ভবত প্রথম স্থানে একটি মিথ রয়েছে। তবে তবুও আপনি এটি ব্যবহার করে দেখতে পারেন, কার্নেল সেটিংসের জন্য এই গাইডলাইনটি দেখুন: http://developer.postgresql.org/pgdocs/postgres/kernel-resources.html

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