একটি মাইএসকিউএল ডাটাবেস সারণীতে সর্বাধিক সংখ্যক রেকর্ড


174

মাইএসকিউএল ডাটাবেস সারণীর জন্য রেকর্ডের উপরের সীমাটি কী। আমি স্বতঃআগ্রহ ক্ষেত্র সম্পর্কে ভাবছি। আমি রেকর্ডের মিলিয়ন যোগ করলে কী হবে? এই ধরনের পরিস্থিতি কীভাবে পরিচালনা করবেন? ধন্যবাদ!


16
1.21 গিগাওয়াটস উল্লেখ না!
বেন

2
কমপক্ষে যদি মেমরিটি পরিবেশন করে তবে সীমাটি স্টোরেজ ইঞ্জিন দ্বারা নির্ধারিত হয়, সুতরাং (উদাহরণস্বরূপ) মাইআইএসএএম ব্যবহার করে আপনি ইনোডিবি ব্যবহার করা থেকে আলাদা সীমা পান।
জেরি কফিন

77
@ পেঁয়াজ-নাইট: আমি রাজি নই। একক টেবিলে কয়েক মিলিয়ন সারি সন্নিবেশ করা স্বাভাবিক , এবং কিছু ডাটাবেসের একটি সীমা থাকে, তাই এটি জিজ্ঞাসা করার মতো। যদি কেউ জিজ্ঞাসা করে যে মাইএসকিউএল কয়েক মিলিয়ন টেবিল সমর্থন করে তবে সম্ভবত এটি কোনও স্থাপত্যিক ভুলের চিহ্ন।
বিল কারভিন

উত্তর:


61

mysql int টাইপগুলি বেশ কয়েকটি সারি করতে পারে: http://dev.mysql.com/doc/refman/5.0/en/numeric-tyype.html

স্বাক্ষরযুক্ত intবৃহত্তম মান হ'ল 4,294,967,295
স্বাক্ষরযুক্ত bigintবৃহত্তম মান18,446,744,073,709,551,615


8
2147483647 সর্বাধিক, সুতরাং আপনি যদি একাধিক বিলিয়ন এন্ট্রি নিয়ে কাজ করে থাকেন তবে কেবলমাত্র স্বায়ত্তশাসনকেই বাড়িয়ে তুলতে হবে? (যা সম্ভবত আপনার নির্বাচিত বিবৃতিগুলি তার আগে অনেক আগেই গলে যাবে)
কেজকাই

2
@ ঠাঁচাওয়াক যা স্বাক্ষরিত ইন্টারের জন্য, দয়া করে মাইএসকিএল ডকুমেন্টেশন পড়ুন।
লিন্ড্রো

8
প্রশ্ন প্রেক্ষাপটে স্বয়ং বৃদ্ধি ক্ষেত্র সারির অনেক হ্যান্ডেল করতে পারেন, এবং যদি না অন্যান্য সংস্থান সীমাবদ্ধতা সম্পর্কে
কিমি।

21
পোস্টার সংখ্যাসূচক বা অন্য কোনও ডেটা ধরণের বিষয়ে জিজ্ঞাসা করছে না। । সঠিক উত্তর হিসাবে এটি কীভাবে পতাকাঙ্কিত করা যেতে পারে তা আমি সত্যিই বুঝতে পারি না। যদিও আমি অবশ্যই স্বীকার করতে পারি যে প্রশ্নটি অস্পষ্ট we
বেয়ার

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

238

একটি পূর্ণসংখ্যার সর্বাধিক মানটি সারণীর সর্বাধিক সংখ্যক সারিগুলির সাথে সামান্যই সম্পর্কযুক্ত a

এটি সত্য যে আপনি যদি আপনার প্রাথমিক কী হিসাবে কোনও অন্তর্নিহিত বা বিগিন্ট ব্যবহার করেন তবে আপনার প্রাথমিক কী এর ডেটা টাইপটিতে অনন্য মানগুলির সংখ্যার মতো কেবল সারি থাকতে পারে, তবে আপনাকে আপনার প্রাথমিক কীটি পূর্ণসংখ্যা হিসাবে তৈরি করতে হবে না , আপনি এটি একটি চর (100) করতে পারেন। আপনি একাধিক কলামে প্রাথমিক কীটি ঘোষণা করতে পারেন।

সারি সংখ্যা ছাড়াও টেবিলের আকারে অন্যান্য বাধা রয়েছে। উদাহরণস্বরূপ আপনি একটি অপারেটিং সিস্টেম ব্যবহার করতে পারেন যা ফাইলের আকারের সীমাবদ্ধতা রয়েছে। অথবা আপনার কাছে একটি 300 গিগাবাইট হার্ড ড্রাইভ থাকতে পারে যা প্রতিটি সারি 1KB আকারের হলে 300 মিলিয়ন সারি সঞ্চয় করতে পারে।

ডাটাবেসের আকারের সীমাটি সত্যই উচ্চতর:

http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

MyISAM স্টোরেজ ইঞ্জিন 2 সমর্থন 32 টেবিল প্রতি সারি, কিন্তু আপনার সাথে মাইএসকিউএল নির্মাণ করতে পারেন --with-big-tablesএটি 2 সমর্থন করার বিকল্প 64 টেবিল প্রতি সারি।

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

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


62
বোকা - আমি ইচ্ছে করে আমি এটি আগে পড়তে পারি ... আমি আমার টেবিলগুলির একটিতে আমার 64 টি ট্যারাবাইটের আকারটি ছাড়িয়েছি এবং এখন আমার সিস্টেমটি এত ধীর!
জেএম 4

2 ^ 32 = 4,294,967,295 এবং 2 ^ 64 = 18,446,744,073,709,551,615 তাই ... সর্বাধিক সংখ্যক সারিগুলির সাথে সর্বাধিক পূর্ণসংখ্যার মানটি কিছুটা করতে পারে। অগত্যা প্রাথমিক কী নয়।
teynon

1
@ টম, ইনোডিবি মাইএসকিউএল 5.5-এ ডিফল্ট স্টোরেজ ইঞ্জিন, এবং 99% ক্ষেত্রে এটির চেয়ে ভাল পছন্দ।
বিল করভিন

2
@ এক্সট্রিএইচ, স্পিনাক্স অনুসন্ধান মাইআইএসএএম বা ইনোডিবি - তে সাধারণত ফুলটেক্সট সূচকের চেয়ে ভাল পছন্দ।
বিল কারভিন

1
মাইএসকিএল 8 এর জন্য সীমা 256 টিবি a৪ কেবি পৃষ্ঠার আকার সহ।
UselesssCat

13

আমার পরামর্শ, কখনই ডেটা মুছবেন না। টেবিলগুলি টেবিলের শেষে 1000 টির বেশি ছাঁটাই কিনা তা বলবেন না। আপনার পরিকল্পনায় আসল ব্যবসায়ের যুক্তি থাকা দরকার যেমন এই ব্যবহারকারী কত দিন নিষ্ক্রিয় ছিলেন। উদাহরণস্বরূপ, যদি এটি 1 বছরের বেশি দীর্ঘ হয় তবে এগুলি একটি আলাদা টেবিলে রাখুন। ধীর সময়ের মাঝে আপনার রক্ষণাবেক্ষণ স্ক্রিপ্টে সাপ্তাহিক বা মাসিক হতে হবে।

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


1
এই ক্ষেত্রে, মাইএসকিউএল বিভাজনটি দেখার জন্য এটি খুব দরকারী: dev.mysql.com/doc/refman/5.6/en/partitioning.html
উইম দেবলাউ

10

ইনোডিবিতে, te৪ টেরাবাইটের সারণির আকারের সীমা এবং 65,535 এর মাইএসকিউএল সারি-আকারের সীমা রয়েছে, সেখানে 1,073,741,824 সারি থাকতে পারে। এটি সর্বাধিক সারি-আকার সীমা ব্যবহার করে রেকর্ডের ন্যূনতম সংখ্যা হবে। তবে সারিটির আকার কম হলে আরও রেকর্ড যুক্ত করা যায়।


65535 সারি সীমা সহ এই (1,073,741,824) সারিগুলি সংরক্ষণ করার জন্য, হার্ডডিস্কের আকার কত প্রয়োজন? দয়া করে প্রস্তাব দিন
ডেভিডবি

1
প্রয়োজনীয় হার্ড ডিস্ক আকারটি কেবলমাত্র সারি এবং সারি-আকারের সংখ্যার ভিত্তিতে নির্ধারণ করা যায় না। টেবিলের আকারটি নিজেই te৪ টেরাবাইট হবে। তবে, পাঠ্য এবং বিএলওবি কলামের ডেটা সারি থেকে পৃথকভাবে সঞ্চিত রয়েছে এবং অতিরিক্ত স্থানের প্রয়োজন হবে। এছাড়াও, এটি পাঠ্য এবং বিএলওবি কলামগুলির সংখ্যা এবং ধরণের উপর নির্ভর করবে কারণ প্রকারের উপর নির্ভর করে আকার পরিবর্তিত হয়। TINYTEXT, পাঠ্য, মিডিয়ামটেক্সট, লংটেক্সট নামে চার প্রকারের TEXT কলাম রয়েছে। এখানে চার ধরণের বিএলওবি কলাম রয়েছে, যেমন: টিনব্লব, মিডিয়ামব্লব, বিএলবিও এবং লংব্লব।
জাইলো

2

Http://dev.mysql.com/doc/refman/5.6/en/features.html- এ স্কেলাবিলিটি এবং সীমাবদ্ধতা বিভাগ অনুযায়ী বৃহত ডাটাবেসগুলির জন্য মাইএসকিউএল সমর্থন। তারা মাইএসকিউএল সার্ভারকে ডেটাবেসগুলির সাথে ব্যবহার করে যা 50 মিলিয়ন রেকর্ড ধারণ করে। কিছু ব্যবহারকারী 200,000 টেবিল এবং প্রায় 5,000,000,000 সারি সহ মাইএসকিউএল সার্ভার ব্যবহার করেন।


আপনি যদি আমাদের কী ধরণের হার্ডওয়্যার "তারা" ব্যবহার করছেন তা আমাদের জানান
আমার অ্যাকাউন্ট_রাম

সত্যিই, আপনি ঠিক বলেছেন। কিন্তু দুর্ভাগ্যক্রমে 'তারা' হার্ডওয়্যার সম্পর্কে কিছুই করেনি
ডেটা

@ মায়াক্যাক্ট_আরমে এটিকে নেক্রোমেন্সের জন্য দুঃখিত, তবে এটির সহায়ক হলে আমি কম তাত্ত্বিক, প্রযোজনা মাইএসকিউএল এর ব্যবহারিক সীমাবদ্ধতা বেশি দেখেছি। আমি এমন একটি ডাটাবেস দেখেছি যা 2x db.r4.16 এক্সএলডাব্লুএস উদাহরণগুলিতে 18 বিলিয়ন সারি (1 পাঠক, 1 লেখক) রয়েছে। প্রতিটি মেশিনে 64 সিপিইউ কোর, 488 জিবি র‌্যাম, 25 জিবিপিএস নেটওয়ার্ক লিঙ্ক, 64 টিবি ডিস্ক ছিল। এই স্ক্রিন ডিবি সিপিইউ এবং ডিস্ক আকার উভয়ই সীমাবদ্ধ করছিল এবং এডাব্লুএস কোনও বৃহত্তর ডিবি অনুকূলিতকরণের উদাহরণ সরবরাহ করে না। এটি একটি সরল ডিবি স্কিমা দ্বারা প্রতিস্থাপন করা হয়েছিল যার জন্য এতগুলি সারি প্রয়োজন নেই।
স্কাইলার ব্রাউন

1

সারি আকারের সীমা

The maximum row size for a given table is determined by several factors:
  • স্টোরেজ ইঞ্জিন বৃহত্তর সারিগুলিকে সমর্থন করতে সক্ষম হলেও মাইএসকিউএল টেবিলের অভ্যন্তরীণ উপস্থাপনার সর্বাধিক সারি আকারের সীমা 65,535 বাইট রয়েছে। বিএলওবি এবং টেক্সট কলামগুলি সারি আকারের সীমাতে 9 থেকে 12 বাইট অবদান রাখে কারণ তাদের সামগ্রীগুলি সারির বাকী অংশ থেকে পৃথকভাবে সঞ্চিত থাকে।

  • ইনোডিবি টেবিলের সর্বাধিক সারি আকার, যা স্থানীয়ভাবে একটি ডাটাবেস পৃষ্ঠায় সঞ্চিত ডেটা প্রয়োগ করে, এটি অর্ধ পৃষ্ঠার চেয়ে কিছুটা কম। উদাহরণস্বরূপ, ডিফল্ট 16KB ইনোডিবি পৃষ্ঠার আকারের জন্য সর্বাধিক সারি আকার 8KB এর চেয়ে কিছুটা কম, যা ইনোডাব_পেজ_সাইজ কনফিগারেশন বিকল্প দ্বারা সংজ্ঞায়িত। " InnoDB টেবিলগুলির সীমাবদ্ধতা "।

  • যদি ভেরিয়েবল-দৈর্ঘ্যের কলামগুলি যুক্ত কোনও সারি InnoDB সর্বাধিক আকারের সীমা অতিক্রম করে তবে InnoDB বহিরাগত অফ-পৃষ্ঠা স্টোরেজের জন্য পরিবর্তনশীল দৈর্ঘ্যের কলামগুলি নির্বাচন করে যতক্ষণ না সারিটি InnoDB সারি আকারের সীমাতে ফিট না করে। ভেরিয়েবল-দৈর্ঘ্যের কলামগুলির জন্য স্থানীয়ভাবে সঞ্চিত ডেটা পরিমাণ যা অফ-পৃষ্ঠায় সঞ্চিত থাকে সারি বিন্যাসের দ্বারা পৃথক হয়। আরও তথ্যের জন্য, " InnoDB সারি সঞ্চয়স্থান এবং সারি ফর্ম্যাটগুলি " দেখুন।
  • বিভিন্ন স্টোরেজ ফর্ম্যাটগুলি বিভিন্ন পরিমাণে পৃষ্ঠা শিরোনাম এবং ট্রেলার তথ্য ব্যবহার করে, যা সারিগুলির জন্য উপলব্ধ সঞ্চয়স্থানের পরিমাণকে প্রভাবিত করে।

1

লিংক http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html

সারি আকারের সীমা

প্রদত্ত টেবিলের সর্বাধিক সারি আকার বিভিন্ন কারণ দ্বারা নির্ধারিত হয়:

স্টোরেজ ইঞ্জিন বৃহত্তর সারিগুলিকে সমর্থন করতে সক্ষম হলেও মাইএসকিউএল টেবিলের অভ্যন্তরীণ উপস্থাপনার সর্বাধিক সারি আকারের সীমা 65,535 বাইট রয়েছে। বিএলওবি এবং টেক্সট কলামগুলি সারি আকারের সীমাতে 9 থেকে 12 বাইট অবদান রাখে কারণ তাদের সামগ্রীগুলি সারির বাকী অংশ থেকে পৃথকভাবে সঞ্চিত থাকে।

ইনোডিবি টেবিলের সর্বাধিক সারি আকার, যা স্থানীয়ভাবে একটি ডাটাবেস পৃষ্ঠায় সঞ্চিত ডেটাতে প্রযোজ্য, 4KB, 8KB, 16KB, এবং 32KB ইনোডাব_পেজ_সেস সেটিংসের জন্য অর্ধেক পৃষ্ঠার চেয়ে কিছুটা কম। উদাহরণস্বরূপ, ডিফল্ট 16KB ইনোডিবি পৃষ্ঠার আকারের জন্য সর্বাধিক সারি আকার 8KB এর চেয়ে কিছুটা কম। K৪ কেবি পৃষ্ঠাগুলির জন্য সর্বাধিক সারির আকার 16KB এর চেয়ে কিছুটা কম। বিভাগ 15.8.8, "InnoDB টেবিলগুলির সীমাবদ্ধতা" দেখুন।

যদি ভেরিয়েবল-দৈর্ঘ্যের কলামগুলি যুক্ত কোনও সারি InnoDB সর্বাধিক আকারের সীমা ছাড়িয়ে যায়, তবে InnoDB বহিরাগত অফ-পৃষ্ঠা স্টোরেজের জন্য পরিবর্তনশীল-দৈর্ঘ্যের কলামগুলি নির্বাচন করে যতক্ষণ না সারিটি InnoDB সারি আকার সীমাতে ফিট না করে। ভেরিয়েবল-দৈর্ঘ্যের কলামগুলির জন্য স্থানীয়ভাবে সঞ্চিত ডেটা পরিমাণ যা অফ-পৃষ্ঠায় সঞ্চিত থাকে সারি বিন্যাসের দ্বারা পৃথক হয়। আরও তথ্যের জন্য, বিভাগ 15.11, "InnoDB রো স্টোরেজ এবং সারি ফর্ম্যাটগুলি" দেখুন।

বিভিন্ন স্টোরেজ ফর্ম্যাটগুলি বিভিন্ন পরিমাণে পৃষ্ঠা শিরোনাম এবং ট্রেলার তথ্য ব্যবহার করে, যা সারিগুলির জন্য উপলব্ধ সঞ্চয়স্থানের পরিমাণকে প্রভাবিত করে।

InnoDB সারি বিন্যাস সম্পর্কে তথ্যের জন্য, বিভাগ 15.11, "InnoDB সারি সঞ্চয়স্থান এবং সারি ফর্ম্যাটগুলি" এবং বিভাগ 15.8.3, "InnoDB টেবিলগুলির শারীরিক সারি কাঠামো" দেখুন।

মাইআইএসএএম স্টোরেজ ফর্ম্যাটগুলি সম্পর্কে তথ্যের জন্য বিভাগ 16.2.3, "মাইআইএসএএম টেবিল স্টোরেজ ফর্ম্যাটগুলি" দেখুন।

http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html


-3

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


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

সবচেয়ে খারাপ ঘটনাটি যখন কেউ ডাটাবেসে ফাইল পাথ সংরক্ষণ করতে শুরু করে ... হায় আমার সমস্ত প্রকল্পের ফাইলগুলি কোথায় গিয়েছিল .... আমার একটি ছোট প্রকল্প রয়েছে যা 3.5 এম ফাইল শুরু হয় যা অনুমান করে ... তারা সব কিছু নয় ঘন ঘন ব্যবহৃত।
কেন্দ্রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.