একটি ডাটাবেসে কত সারি অনেক?


87

আমি 1,000,000 রেকর্ড সহ একটি মাইএসকিউএল ইনোডিবি টেবিল পেয়েছি। এটা কি খুব বেশি? বা ডাটাবেসগুলি এই এবং আরও কিছু পরিচালনা করতে পারে? আমি জিজ্ঞাসা করেছি কারণ আমি লক্ষ্য করেছি যে কিছু প্রশ্ন (উদাহরণস্বরূপ, কোনও টেবিল থেকে শেষ সারিটি পাওয়া) 100 এর সাথে একটির চেয়ে 1 মিলন সারি সহ সারণীতে স্লো (সেকেন্ড) হয়।

উত্তর:


114

আমার 1000000 রেজিস্টার সহ একটি মাইএসকিউএল ইনোডিবি টেবিল রয়েছে। এটা কি খুব বেশি?

না, ১,০০,০০০ সারি (একে একে রেকর্ডস) ডাটাবেসের জন্য খুব বেশি নয়।

আমি জিজ্ঞাসা করেছি কারণ আমি লক্ষ্য করেছি যে কিছু প্রশ্নের (উদাহরণস্বরূপ, কোনও টেবিলের শেষ নিবন্ধকরণ পাওয়া) ১০০ জনের চেয়ে এক মিলিয়ন রেজিস্টার সহ সারণীতে স্লো (সেকেন্ড) রয়েছে।

এই বিবৃতিতে অ্যাকাউন্টে প্রচুর পরিমাণ আছে। সাধারণ সন্দেহভাজনরা হলেন:

  1. দুর্বল লিখিত ক্যোয়ারী
  2. টেবিলে একটি বিদ্যমান রয়েছে ধরে নিয়ে প্রাথমিক কী ব্যবহার করা হচ্ছে না
  3. ভালভাবে ডিজাইন করা ডেটা মডেল (টেবিলের কাঠামো)
  4. সূচকের অভাব

4
5. পুরানো সার্ভারের চশমাগুলি <শেষ অবলম্বন।
লুক্কায়িত

19
@ ব্রিমস্টেট: আমি সর্বদা ভাবতাম যে বিশেষ্যটি "সূচকগুলি" হওয়া উচিত, তবে আমি মনে করি না যে আমি কখনই এটি ডেটাবেসগুলির জন্য ব্যবহার করতে দেখেছি: উইকিপিডিয়া: en.wikedia.org/w/… থেকে মিঃ কোডিং হরর: কোডিংহরর। com / ব্লগ / সংরক্ষণাগারগুলি / 000638.htmlবিষয়টিতে এই আকর্ষণীয় এসও পোস্ট রয়েছে: স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 1001366
ড্যানিয়েল ভ্যাসালো

7
6. ইনোডাবের বিভিন্ন ক্যাশের জন্য পর্যাপ্ত মেমরি বরাদ্দ নেই
জেসন

উন্নত পারফরম্যান্সের জন্য আমাকে প্রাইমারিকি ব্যবহার করা উচিত কিনা? অন্যান্য কী যেমন সূচি, ইউনিক ব্যবহার সম্পর্কে কী? আমি কি এগুলি ব্যবহার করতে পারি? ধন্যবাদ
ব্যবহারকারী 1844933

জেসন বলেছিল যেহেতু কম্পিউটার মেমরির সাথে
জড়িয়ে পড়েছে

67

আমার কাছে 97,000,000 এরও বেশি রেকর্ড (30 জিবি ডেটাফিল ) সহ একটি ডাটাবেস রয়েছে এবং কোনও সমস্যা নেই।

আপনার টেবিল সূচকটি সংজ্ঞায়িত এবং উন্নত করতে কেবল মনে রাখবেন ।

সুতরাং এটি স্পষ্ট যে 1,000,000 অনেক নয়! (তবে আপনি যদি সূচক না করেন; হ্যাঁ, এটি অনেক বেশি)


10
কোনও কলামে একটি "প্রাথমিক কী" যুক্ত করা উচিত (স্বয়ংক্রিয় বৃদ্ধি নির্বাচন করে) সূচীকরণ করা হবে?
নাথান

8
@ নাথান, আসলে আপনি যখন কলামটিকে প্রাথমিক কী হিসাবে নির্ধারণ করবেন তখন এটি স্বয়ংক্রিয়ভাবে সূচকযুক্ত হয়ে যায়, তবে প্রতিটি টেবিলে কেবল একটি প্রাথমিক কী থাকতে পারে, যদি আপনার কিছু স্তম্ভের জন্য সূচি যোগ করতে হয় তবে এই স্ট্যাকওভারফ্লো.com/
ডেভ

আমার একটি ট্রিলিয়ন সহ টেবিল আছে তবে লিফোর ফর্ম্যাট ডেটা নির্বাচন করা ধীর?
সৌরভ চন্দ্র প্যাটেল

সমস্যা না হওয়ার সংজ্ঞা দিন। সবচেয়ে জটিল প্রশ্নটি কতক্ষণ সময় নেয়? আমাদের কাছে 100 মিলিয়ন সারি সহ একটি টেবিল রয়েছে এবং তারা ক্লায়েন্টিং বা অর্ডারিংয়ের মানদণ্ডটি নির্ধারণ না করেই এক ক্লায়েন্টের কাছে সর্বোচ্চ 5 সেকেন্ডে প্রশ্নগুলি করা হবে বলে আশা করে। আমাদের সূচকগুলি উন্নত হতে পারে তবে আমরা সূচক যুক্ত করার চেষ্টা করে সবকিছু লক করার আগে
জো ইয়াহচৌচি

20% উত্পাদনের টেবিলগুলিতে (একটি পুরানো গবেষণা অনুসারে) 1M এর বেশি সারি রয়েছে। কয়েক বিলিয়ন সারি দিয়ে কয়েকটা দেখেছি ।
রিক জেমস

19

আপনার জিজ্ঞাসা পরীক্ষা করতে 'ব্যাখ্যা' ব্যবহার করুন এবং ক্যোয়ারী পরিকল্পনায় কোনও সমস্যা আছে কিনা তা দেখুন।


6
যদিও এটি একটি ভাল ধারণা, এই উত্তরটি নিজেই কোনও নবাগতকে দেওয়া ভাল নয়।
এক্সপ্ল্যান

17
কোয়েরিগুলি পরীক্ষা করতে আপনাকে সহায়তা করার মতো অন্য কোনও সরঞ্জাম নেই, তাই আরও ভাল শেখা শুরু করুন EXPLAIN- নবাবি বা না।
টি

30
কেউ যদি ব্যাখ্যা করতে পারে তবে চমৎকার হবে EXPLAIN;)
জো ই।

7
@ ডেডপুল মাইএসকিএল ব্যাখ্যা করেছেন
সিথসু

15

আমি মনে করি এটি একটি সাধারণ ভুল ধারণা - ডাটাবেস স্কেলিবিলিটি করার ক্ষেত্রে আকারটি সমীকরণের একমাত্র অংশ। অন্যান্য সমস্যা আছে যা (বা আরও শক্ত):

  • কার্যক্ষম সেটটি কত বড় (অর্থাত মেমরিতে লোড করা এবং সক্রিয়ভাবে কাজ করার জন্য কতটা ডেটা প্রয়োজন)। যদি আপনি কেবল ডেটা sertোকান এবং তারপরে এটি কিছু না করেন তবে এটি সমাধান করা আসলে একটি সহজ সমস্যা।

  • কোন স্তরের সম্মতি প্রয়োজন? সেখানে কি কেবল একজন ব্যবহারকারী সন্নিবেশ / পঠন করছেন, বা আমাদের একসাথে প্রচুর কয়েক হাজার ক্লায়েন্ট কাজ করছে?

  • প্রতিশ্রুতি / স্থায়িত্ব এবং পারফরম্যান্সের ধারাবাহিকতার কোন স্তরের প্রয়োজন? আমাদের প্রতিটি প্রতিশ্রুতি সম্মান করতে পারি তা আমাদের কি নিশ্চিত করতে হবে? গড় লেনদেন দ্রুত হলে এটি কি ঠিক আছে, বা আমরা নিশ্চিত করতে চাই যে সমস্ত লেনদেন নির্ভরযোগ্যভাবে দ্রুত হয় (ছয় সিগমা মানের নিয়ন্ত্রণ যেমন - http://www.mysqlperformanceblog.com/2010/06/07/performance-optimization- এবং-ছয় সিগমা / )

  • আপনার কি কোনও অপারেশনাল সমস্যাগুলি করা দরকার যেমন টেবিল স্কিমা ALTER করুন? InnoDB এ এটি সম্ভব, তবে অবিশ্বাস্যরূপে ধীর হওয়ায় এটি প্রায়শই অগ্রভাগে একটি অস্থায়ী টেবিল তৈরি করতে হয় (সমস্ত সংযোগকে অবরুদ্ধ করে)।

সুতরাং আমি দুটি সীমাবদ্ধ বিষয়গুলি উল্লেখ করতে যাচ্ছি:

  • ক্যোয়ারী লেখার ক্ষেত্রে / আপনার সূচকে ভাল করার জন্য আপনার নিজস্ব দক্ষতা।
  • অ্যালটার টেবিলে বিবৃতিতে অপেক্ষা করতে আপনি কতটা ব্যথা সহ্য করতে পারেন।

4
সম্পাদনা করুন: অস্থায়ী টেবিলগুলি তৈরি করতে ALTER TABLE সম্পর্কে পরামর্শটি একটু তারিখের। মাইএসকিউএল 5.5-তে একটি দ্রুত সূচক তৈরি হয় এবং 5.6 এখন অনলাইনে ডিডিএল করে।
মরগান টকার

3

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

যদি আপনার অর্থ 1 মিলিয়ন কলাম (মাইএসকিউএল এমনকি এটি সম্ভব নয়) তবে হ্যাঁ, এটি কিছুটা বড় বলে মনে হচ্ছে এবং সম্ভবত সমস্যা তৈরি করবে।


3

নিবন্ধন? আপনি কি রেকর্ড বলতে চান?

এক মিলিয়ন রেকর্ড আজকাল কোনও ডাটাবেসের জন্য সত্যিকারের বড় বিষয় নয়। আপনি যদি কোনও সমস্যা নিয়ে চলে যান তবে এটি সম্ভবত ডাটাবেস সিস্টেম নয়, বরং আপনি যে হার্ডওয়্যারটি চালাচ্ছেন এটি। হার্ডওয়ারটি ফেলে দেওয়ার আগে আপনি সম্ভবত ডিবিতে কোনও সমস্যায় পড়তে যাচ্ছেন না, সম্ভবত।

এখন, স্পষ্টতই কিছু প্রশ্ন অন্যের তুলনায় ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে চলে যায় eries

ঘটনাচক্রে, কোনও টেবিলে "শেষ" রেকর্ডের মতো কোনও জিনিস নেই, যৌক্তিক দৃষ্টিকোণ থেকে তাদের কোনও সহজাত আদেশ নেই।


আমি কিছু বলতে চাইছি "আইডি DESC লিমিটেড 0 এর মাধ্যমে টেবিলের অর্ডার থেকে নির্বাচন করুন"
জুয়ানজো কন্টি

4
সম্ভবত আপনার SELECT LAST_INSERT_ID()এই ক্যোয়ারির পরিবর্তে প্রয়োজন ।
সত্য নরম

3

আমি বিলিপিবিহীন টেবিলগুলি কয়েক বিলিয়ন (ইনডেক্সড) রেকর্ড সহ দেখেছি, যা বিশ্লেষণমূলক কাজের জন্য স্ব-যোগদান করেছে। আমরা অবশেষে জিনিসটি বিভক্ত করেছি তবে সত্যই আমরা এত পার্থক্য দেখতে পাই নি।

এটি বলেছিল, এটি ওরাকলে ছিল এবং আমি মাইএসকিউএলে ডেটাটির পরিমাণটি পরীক্ষা করিনি। সূচী আপনার বন্ধু :)


2

ধরে নিলেন আপনার "রেজিস্টার" বলতে "রেজিস্টার্ড" না, এটি খুব বেশি নয়, মাইএসকিউএল স্কেলগুলি সত্যই ভাল করে তোলে এবং আপনার হার্ড ডিস্কে আপনার যতটুকু জায়গা রয়েছে তার বেশি পরিমাণে রেকর্ড রাখতে পারে।

অবশ্যই অনুসন্ধান অনুসন্ধানগুলি ধীর হবে er ক্ষেত্রগুলি যথাযথভাবে সূচিকৃত হয় তা নিশ্চিত করা ছাড়া এর আশেপাশে আসলে কোনও উপায় নেই।


4
প্রযুক্তিগতভাবে, আপনি ব্যবহার করছেন ফাইল সিস্টেমের সর্বাধিক ফাইল আকারের দ্বারা সারণির আকারও সীমাবদ্ধ হতে পারে।
টিস্টার

0

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

যদিও 1 এম সারিগুলি অনেকগুলি নয়, এটি ডিবি সার্ভারে আপনার কত স্মৃতি রয়েছে তার উপরও নির্ভর করে। যদি টেবিলটি সার্ভারের দ্বারা মেমরিতে ক্যাশে করা খুব বড় হয় তবে অনুসন্ধানগুলি ধীর হবে।


0

সরবরাহ করা ক্যোয়ারীটি ডেটা বাছাই করার জন্য একটি বাছাই করা মার্জড পদ্ধতি ব্যবহার করার কারণে ব্যতিক্রমীভাবে ধীর হবে।

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

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