ইনোডিবি এবং মাইআইএসএএম এর মধ্যে প্রধান পার্থক্যগুলি কী কী?
ইনোডিবি এবং মাইআইএসএএম এর মধ্যে প্রধান পার্থক্যগুলি কী কী?
উত্তর:
আমি দেখতে পাচ্ছি প্রথম বড় পার্থক্য হ'ল InnoDB সারি-স্তরের লক প্রয়োগ করে যখন মাইআইএসএএম কেবল একটি টেবিল-স্তরের লক করতে পারে। আপনি InnoDB এ আরও ভাল ক্রাশ পুনরুদ্ধার পাবেন। তবে FULLTEXT
মাইআইএসএএম-এর মতো এর v5.6 অবধি অনুসন্ধানের সূচী নেই es InnoDB লেনদেন, বিদেশী কী এবং সম্পর্কের সীমাবদ্ধতাগুলিও প্রয়োগ করে যখন মাইআইএসএএম এটি করে না।
তালিকাটি আরও কিছুটা যেতে পারে। তবুও, উভয়েরই পক্ষে তাদের পক্ষে অনন্য সুবিধা রয়েছে এবং একে অপরের বিরুদ্ধে অসুবিধা রয়েছে। এগুলির প্রত্যেকটি অন্য পরিস্থিতিতে কিছু পরিস্থিতিতে বেশি উপযুক্ত।
সুতরাং সংক্ষেপে ( টিএল; ডিআর ):
FULLTEXT
অনুসন্ধান সূচী রয়েছে, মাইএসকিউএল 5.6 (ফেব্রুয়ারী 2013) পর্যন্ত ইনোডিবি করেনি ।version 5.6.4
InnoDB হিসাবে FULLTEXT
অনুসন্ধান সমর্থন করে । dev.mysql.com/doc/refman/5.6/en/fultext-restrictions.html
এখনও উল্লেখ করা হয়নি এমন আরও একটি বড় পার্থক্য হ'ল প্রতিটি স্টোরেজ ইঞ্জিনের জন্য কীভাবে ক্যাশিং করা হয়।
ব্যবহৃত মূল প্রক্রিয়াটি হ'ল কী ক্যাশে। এটি কেবলমাত্র .MYI ফাইল থেকে সূচী পৃষ্ঠাগুলি ক্যাশে করে। আপনার কী ক্যাশে আকার দিতে, নিম্নলিখিত কোয়েরিটি চালান:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA ) A,
(SELECT 2 PowerOf1024) B;
এটি আপনার বর্তমান ডেটা সেট ( মাইআইএসএএম কী কী ) ( key_buffer_size ) এর জন্য প্রস্তাবিত সেটিংটি দেবে ( ক্যোয়ারী 4G (4096M) এ সুপারিশটি ক্যাপ করবে 32 32-বিট ওএসের জন্য, 4 জিবি সীমাটি 64৪ -বিট, 8 গিগাবাইটের জন্য।
ব্যবহৃত প্রধান প্রক্রিয়াটি হলেন ইনোডিবি বাফার পুল। এটি InnoDB টেবিল থেকে অ্যাক্সেস করা ডেটা এবং সূচী পৃষ্ঠাগুলি ক্যাশে করে। আপনার InnoDB বাফার পুল আকার করতে, নিম্নলিখিত কোয়েরি চালান:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
এটি আপনার বর্তমান ডেটা সেটকে দেওয়া ইনোডিবি বাফার পুল ( ইনোডাব_বফার_পুল_সাইজ ) আকারের জন্য প্রস্তাবিত সেটিংটি দেবে ।
InnoDB লগ ফাইলের আকার পরিবর্তন করতে ভুলবেন না (ib_logfile0 এবং ib_logfile1)। মাইএসকিউএল উত্স কোড সমস্ত InnoDB লগ ফাইলের সম্মিলিত আকারের ক্যাপ রাখে <4G (4096M)। সরলতার জন্য, মাত্র দুটি লগ ফাইল দেওয়া হল, আপনি এখানে কীভাবে আকার দিতে পারেন:
service mysql stop
rm /var/log/mysql/ib_logfile[01]
service mysql start
(ib_logfile0 এবং ib_logfile1 পুনরায় তৈরি করা হয়েছে)উভয় প্রশ্নের শেষে একটি ইনলাইন ক্যোয়ারী
(SELECT 2 PowerOf1024)
বি
(SELECT 0 PowerOf1024)
বাইটস সেটিং দেয়(SELECT 1 PowerOf1024)
কিলোবাইটে সেটিং দেয়(SELECT 2 PowerOf1024)
মেগাবাইটে সেটিং দেয়(SELECT 3 PowerOf1024)
গিগাবাাইটে সেটিং দেয়সাধারণ জ্ঞানের বিকল্প নেই। আপনার যদি সীমাবদ্ধ মেমরি, স্টোরেজ ইঞ্জিনগুলির মিশ্রণ বা এর সংমিশ্রণ থাকে তবে আপনাকে বিভিন্ন পরিস্থিতিতে সামঞ্জস্য করতে হবে।
সম্ভাব্য পরিস্থিতিতে অন্তহীন !!!
মনে রাখবেন, আপনি যা বরাদ্দ করেন না কেন, ডিবি সংযোগ এবং অপারেটিং সিস্টেমের জন্য পর্যাপ্ত পরিমাণ র্যাম রেখে যান।
ইনোডিবি অফারগুলি:
InnoDB এ টেক্সট এবং বিএলওবি ব্যতীত পর পরের সমস্ত ডেটা সর্বাধিক 8,000 বাইট দখল করতে পারে। মাইএসকিউএল 5.6 (ফেব্রুয়ারী 2013) পর্যন্ত InnoDB এ সম্পূর্ণ পাঠ্য ইনডেক্সিং উপলব্ধ নেই। InnoDB- এ COUNT(*)
এস (যখন WHERE
, GROUP BY
বা JOIN
ব্যবহার করা হয় না) মাইআইএসএএম এর চেয়ে ধীর সঞ্চালিত হয় কারণ সারি গণনা অভ্যন্তরীণভাবে সংরক্ষণ করা হয় না। InnoDB একটি ফাইলে ডেটা এবং সূচি উভয়ই সঞ্চয় করে। InnoDB ডেটা এবং সূচক উভয়কে ক্যাশে করতে একটি বাফার পুল ব্যবহার করে।
মাইআইএসএএম অফার দেয়:
COUNT(*)
এস (কখন WHERE
, GROUP BY
বা JOIN
ব্যবহৃত হয় না)মাইআইএসএএম-এ টেবিল-স্তর লকিং রয়েছে তবে সারি-স্তরের লকিং নেই। কোনও লেনদেন নেই। কোনও স্বয়ংক্রিয় ক্র্যাশ পুনরুদ্ধার নয়, তবে এটি মেরামতের টেবিলের কার্যকারিতা সরবরাহ করে। কোনও বিদেশী কী বাধা নেই। InnoDB টেবিলের তুলনায় মাইআইএসএএম টেবিলগুলি সাধারণত ডিস্কে আকারে আরও কমপ্যাক্ট থাকে। মাইআইএসএএম টেবিলগুলি প্রয়োজনে মাইসম্প্যাকের সাথে সংকোচনের মাধ্যমে আকারে আরও উচ্চ হ্রাস করা যেতে পারে তবে কেবল পঠনযোগ্য হয়ে উঠবে। মাইআইএসএএম একটি ফাইলে সূচি এবং অন্যটিতে ডেটা সঞ্চয় করে। মাইআইএসএএম ক্যাচিং সূচিগুলির জন্য কী বাফার ব্যবহার করে এবং ডেটা ক্যাচিং পরিচালনাকে অপারেটিং সিস্টেমে ফেলে দেয়।
সামগ্রিকভাবে আমি বেশিরভাগ উদ্দেশ্যে ইনোএনডিবি এবং মাইআইএসএএম-কে কেবল বিশেষায়িত ব্যবহারের জন্য সুপারিশ করব। ইনোডিবি এখন নতুন মাইএসকিউএল সংস্করণগুলিতে ডিফল্ট ইঞ্জিন।
আরও একটি জিনিস: আপনি কেবল ফাইল সিস্টেমের স্ন্যাপশট নিয়ে InnoDB টেবিলগুলি ব্যাকআপ করতে পারেন। মাইআইএসএএম ব্যাক আপ করার জন্য মাইএসকিএলডাম ব্যবহার করা দরকার এবং এটি সামঞ্জস্যপূর্ণ হওয়ার নিশ্চয়তা নেই (উদাহরণস্বরূপ আপনি যদি কোনও পিতা-মাতা এবং চাইল্ড টেবিলের মধ্যে সন্নিবেশ করান তবে আপনার ব্যাকআপে কেবলমাত্র শিশু টেবিলের সারিটি খুঁজে পেতে পারেন)।
মূলত, যদি আপনার কাছে ডেটাটির অন্য অনুলিপি থাকে এবং এটি কেবল মাইএসকিউএল-তে ক্যাচ করে থাকে যেমন পিএইচপি ওয়েবসাইট থেকে এটি অ্যাক্সেসের কোনও মানক উপায়কে অনুমতি দেয় তবে মাইআইএসএএম ঠিক আছে (অর্থাত্ এটি ফ্ল্যাট সিএসভি ফাইলের চেয়ে ভাল বা অনুসন্ধানের জন্য লগফাইলে এবং একযোগে অ্যাক্সেস)। ডাটাবেসটি যদি ডেটাটির প্রকৃত "মাস্টার কপি" হয়, আপনি যদি ব্যবহারকারীদের কাছ থেকে প্রকৃত ডেটা করছেন INSERT
এবং UPDATE
ব্যবহার করছেন , তবে ইনোডিবি ব্যতীত অন্য কিছু ব্যবহার করা বোকামি, কোনও ধরণের মাইআইএসএএম বিশ্বাসযোগ্য নয় এবং পরিচালনা করা শক্ত, আপনি ' myisamchk
অর্ধেক সময় করবো, কোনও পারফরম্যান্স লাভ উপেক্ষা করে ...
(আমার ব্যক্তিগত অভিজ্ঞতা: মাইআইএসএমে একটি 2 টেরাবাইট ডিবি)।
গেমটি থেকে কিছুটা দেরি ... তবে কয়েক মাস আগে আমি মাইআইএসএএম এবং ইনোডিবি-র মধ্যে প্রধান পার্থক্য সম্পর্কে বিস্তারিত লিখেছি এখানে একটি বিস্তৃত পোস্ট । একটি চুপা (এবং সম্ভবত একটি বিস্কুট) ধরুন, এবং উপভোগ করুন।
মাইআইএসএএম এবং ইনোডিবি-র মধ্যে প্রধান পার্থক্য হ'ল রেফারেন্সিয়াল অখণ্ডতা এবং লেনদেন। লকিং, রোলব্যাকস এবং পূর্ণ-পাঠ্য অনুসন্ধানের মতো অন্যান্য পার্থক্য রয়েছে।
রেফারেন্সিয়াল অখণ্ডতা সুনির্দিষ্ট করে যে টেবিলের মধ্যে সম্পর্ক সুসংগত থাকে। আরও সুনির্দিষ্টভাবে, এর অর্থ যখন কোনও টেবিলের (উদাহরণস্বরূপ তালিকাগুলি) একটি বিদেশী কী থাকে (যেমন পণ্য আইডি) কোনও আলাদা টেবিলের দিকে নির্দেশ করে (উদাহরণস্বরূপ পণ্য), যখন আপডেটগুলি বা মুছে ফেলা টুয়েন্টি টেবিলের সাথে ঘটে তখন এই পরিবর্তনগুলি সংযোগের সাথে সংযুক্ত করা হয় টেবিল। আমাদের উদাহরণস্বরূপ, কোনও পণ্যটির নতুন নামকরণ করা হলে লিঙ্কিং টেবিলের বিদেশী কীগুলিও আপডেট হবে; যদি কোনও পণ্য 'পণ্য' টেবিল থেকে মুছে ফেলা হয়, মুছে ফেলা এন্ট্রিতে নির্দেশিত কোনও তালিকাও মুছে ফেলা হবে। তদ্ব্যতীত, যে কোনও নতুন তালিকার অবশ্যই বৈধ, বিদ্যমান প্রবেশের দিকে নির্দেশ করে সেই বিদেশী কী থাকতে হবে।
ইনোডিবি হ'ল রিলেশনাল ডিবিএমএস (আরডিবিএমএস) এবং এর ফলে রেফারেন্সিয়াল অখণ্ডতা রয়েছে, যদিও মাইআইএসএএম তা করে না।
একটি সারণীতে থাকা ডেটা ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (ডিএমএল) বিবৃতি, যেমন নির্বাচন, INSERT, আপডেট এবং ডিলিট ব্যবহার করে পরিচালনা করা হয়। কোনও লেনদেন গোষ্ঠী দুই বা ততোধিক ডিএমএল একসাথে কাজের একক ইউনিটে বিবৃতি দেয়, তাই হয় পুরো ইউনিটটি প্রয়োগ করা হয়, বা এর কোনওটিই হয় না।
মাইআইএসএএম লেনদেন সমর্থন করে না যেখানে ইনোডিবি করে।
যদি মাইআইএসএএম টেবিলটি ব্যবহার করার সময় কোনও ক্রিয়াকলাপ ব্যাহত হয়, অবিলম্বে অপারেশনটি বাতিল হয়ে যায়, এবং সারিগুলি (বা প্রতিটি সারির মধ্যে থাকা ডেটা) ক্ষতিগ্রস্থ হয়, এমনকি অপারেশন সম্পন্ন না হয়ে গেলেও প্রভাবিত থাকে।
ইনোডিবি টেবিল ব্যবহার করার সময় যদি কোনও অপারেশন বাধাগ্রস্ত হয়, কারণ এটি লেনদেন ব্যবহার করে, যার মধ্যে পারমাণবিকতা রয়েছে, কোনও লেনদেন যা সম্পন্ন হয় নি কার্যকর হবে না, যেহেতু কোন প্রতিশ্রুতিবদ্ধতা করা হয়নি।
যখন কোনও কোয়েস্ট কোনও মাইআইএসএএম টেবিলের বিপরীতে চলে, তখন যে সারণীতে এটি জিজ্ঞাসা করা হচ্ছে তা পুরো লক হয়ে যাবে। এর অর্থ হল পরবর্তী প্রশ্নগুলি কেবলমাত্র বর্তমানের সমাপ্তির পরে কার্যকর করা হবে। আপনি যদি একটি বড় টেবিল পড়ছেন, এবং / অথবা ঘন ঘন পড়া এবং লেখার ক্রিয়াকলাপ হয় তবে এর অর্থ প্রশ্নের একটি বিশাল ব্যাকলগ হতে পারে।
যখন কোনও কোয়েরি কোনও ইনোডিবি টেবিলের বিরুদ্ধে চলে, তখন জড়িত কেবলমাত্র সারিগুলি লক হয়ে যায়, বাকী টেবিলটি CRUD ক্রিয়াকলাপের জন্য উপলব্ধ থাকে। এর অর্থ হল কোয়েরিগুলি একই টেবিলে একই সাথে চলতে পারে তবে তারা একই সারিটি ব্যবহার না করে।
InnoDB- এ এই বৈশিষ্ট্যটি সম্মতিযুক্ত হিসাবে পরিচিত। সমষ্টি হিসাবে যতটা দুর্দান্ত, তেমনি একটি বড় ত্রুটি রয়েছে যা নির্বাচিত টেবিলের একটি নির্দিষ্ট ব্যাপ্তির ক্ষেত্রে প্রযোজ্য, কার্নেলের থ্রেডগুলির মধ্যে স্যুইচ করার ক্ষেত্রে একটি ওভারহেড রয়েছে এবং সার্ভারটি থামতে না পারার জন্য আপনার কার্নেল থ্রেডগুলির একটি সীমা নির্ধারণ করা উচিত ।
আপনি যখন মাইআইএসএএম-তে কোনও অপারেশন চালান, পরিবর্তনগুলি সেট করা হয়; InnoDB এ, সেই পরিবর্তনগুলি আবার ঘুরিয়ে দেওয়া যেতে পারে। লেনদেন নিয়ন্ত্রণ করতে সর্বাধিক সাধারণ কমান্ডগুলি হ'ল কমিট, রোলব্যাক এবং সেভপয়েন্ট। ১. কমিট - আপনি একাধিক ডিএমএল অপারেশন লিখতে পারবেন, তবে পরিবর্তনগুলি কেবল তখনই সাশ্রয় হবে যখন কোন কমিট তৈরি হবে ২. রোলব্যাক - আপনি যে কোনও অপারেশন এখনও প্রতিশ্রুতিবদ্ধ হয়নি তা বাতিল করতে পারেন 3.. সংরক্ষণ করুন - তালিকার একটি পয়েন্ট সেট করে একটি রোলব্যাক অপারেশন যেখানে রোলব্যাক করতে পারে operations
মাইআইএসএএম কোনও ডেটা অখণ্ডতা সরবরাহ করে না - হার্ডওয়্যার ব্যর্থতা, অশুচি শাটডাউন এবং বাতিল অপারেশনগুলির ফলে ডেটাটি দুর্নীতিগ্রস্থ হতে পারে। এর জন্য সূচিপত্র এবং সারণীগুলির পুরো মেরামত বা পুনর্নির্মাণের প্রয়োজন হবে।
অন্যদিকে, ইনোডিবি দুর্নীতি রোধে একটি লেনদেনের লগ, একটি ডাবল লিখনের বাফার এবং স্বয়ংক্রিয় চেকসামিং এবং বৈধতা ব্যবহার করে। ইনোডিবি কোনও পরিবর্তন করার আগে, এটি আইবডাতা 1 নামে একটি সিস্টেম টেবিলস্পেস ফাইলটিতে লেনদেনের আগে ডেটা রেকর্ড করে। যদি কোনও ক্র্যাশ হয় তবে InnoDB those লগগুলির পুনরায় খেলতে হবে ore
InnoDB মাইএসকিউএল সংস্করণ 5.6.4 অবধি ফুলটেক্সট ইনডেক্সিং সমর্থন করে না। এই পোস্টটি লেখা হিসাবে, অনেক শেয়ার্ড হোস্টিং সরবরাহকারীদের মাইএসকিউএল সংস্করণটি এখনও 5.6.4 এর নীচে, যার অর্থ ফুলটেক্সট ইনডেক্সিং ইনোডিবি সারণীর জন্য সমর্থিত নয়।
তবে এটি মাইআইএসএএম ব্যবহারের কোনও বৈধ কারণ নয়। কোনও হোস্টিং সরবরাহকারীতে পরিবর্তন করা ভাল যা মাইএসকিউএল-এর সর্বশেষতম সংস্করণগুলিকে সমর্থন করে। এমন নয় যে মাইআইএসএএম টেবিল যা ফুলটেক্সট ইনডেক্সিং ব্যবহার করে কোনও ইনোডিবি টেবিলে রূপান্তর করা যায় না।
উপসংহারে, InnoDB আপনার পছন্দসই ডিফল্ট স্টোরেজ ইঞ্জিন হওয়া উচিত। মাইআইএসএএম বা অন্যান্য ডেটা প্রকারগুলি যখন কোনও নির্দিষ্ট প্রয়োজন পরিবেশন করে তা চয়ন করুন।
আমার অভিজ্ঞতায়, প্রতিটি ইঞ্জিন যেভাবে লক পরিচালনা করে তা সর্বাধিক উল্লেখযোগ্য পার্থক্য। মাইআইএসএএম টেবিল লকিং ব্যবহার করার সময় ইনোডিবি সারি লকিং ব্যবহার করে। থাম্বের নিয়ম হিসাবে, আমি ভারী টেবিলগুলি লেখার জন্য InnoDB এবং ভারী টেবিলগুলি পড়ার জন্য মাইআইএসএএম ব্যবহার করি।
অন্যান্য গুরুত্বপূর্ণ পার্থক্যগুলির মধ্যে রয়েছে:
FULLTEXT
এবং SPATIAL
। InnoDB পড়ার- এবং লেখার-ভারী বোঝা উভয়ের জন্যই ভাল ।
আমি মাইআইএসএএমএলকে মাইএসকিউএল-এর জন্য 'ডিফল্ট' টেবিল পছন্দ হিসাবে দেখার প্রবণতা রাখি, তাই আমি ইনোডিবি-র বেশিরভাগ ব্যবহারকারীর জন্য পার্থক্য চিহ্নিত করব I'll
MYISAM
MYISAM টেবিল স্তর লকিং, সম্পূর্ণ অনুসন্ধান অনুসন্ধান সরবরাহ করে। মাইআইএসএএম এর সমস্ত স্টোরেজ ইঞ্জিন বন্ধ করে দেওয়ার জন্য সবচেয়ে নমনীয় স্বাচ্ছন্দ্যযুক্ত কলাম রয়েছে। মাইআইএসএএম লেনদেন সমর্থন করে না।
InnoDB
আইএনএনওডিবি হ'ল লেনদেন নিরাপদ সঞ্চয়স্থান ইঞ্জিন। INNODB এর প্রতিশ্রুতিবদ্ধতা, রোলব্যাক এবং ক্রাশ-পুনরুদ্ধার ক্ষমতা রয়েছে। INNODB বিদেশী কী রেফারেনশিয়াল অখণ্ডতা সমর্থন করে।
মাইএসকিউএল 5.6 পরিবর্তন অন্তর্ভুক্ত
ইনোডব স্টোরেজ ইঞ্জিন:
সুতরাং, MyISAM
যদি আপনি ইতিমধ্যে 5.6 এ আপগ্রেড হয়ে থাকেন তবে ইঞ্জিন ব্যবহার করার কোনও মানে নেই , যদি না হয় তবে মাইএসকিউএল 5.6-এ উন্নীত হওয়ার জন্য অপেক্ষা করবেন না।
মাইআইএসএএমএল মাইএসকিউএল এর স্টোরেজ ইঞ্জিন। মাইএসকিউএল 5.5 এর আগে এটি মাইএসকিউএলের জন্য ডিফল্ট স্টোরেজ ইঞ্জিন ছিল। এটি পুরানো ইসম স্টোরেজ ইঞ্জিনের উপর ভিত্তি করে। মাইআইএসএএম ভারী রিড অপারেশন সহ পরিবেশের জন্য অনুকূলিত হয়েছে, এবং কয়েকটি লেখায় বা মোটেও কিছুই নয়। মাইআইএসএএম দ্রুত পাঠের জন্য যে কারণে অনুমতি দেয় তা হ'ল এর সূচকগুলির কাঠামো: প্রতিটি এন্ট্রি ডেটা ফাইলের একটি রেকর্ডের দিকে নির্দেশ করে এবং পয়েন্টারটি ফাইলের শুরু থেকেই অফসেট হয়। এইভাবে রেকর্ডগুলি দ্রুত পড়া যায়, বিশেষত যখন ফর্ম্যাটটি সংশোধন করা হয়। সুতরাং, সারি স্থির দৈর্ঘ্য হয়। একটি সাধারণ অঞ্চল যেখানে মাইআইএসএএম পছন্দ করতে পারে তা হ'ল ডেটা গুদাম, কারণ এটিতে খুব বড় টেবিলের উপর প্রশ্ন রয়েছে, এবং ডাটাবেস ব্যবহার না করা অবস্থায় (সাধারণত রাতে) এই জাতীয় টেবিলগুলির আপডেট করা হয়। সন্নিবেশগুলিও সহজ, কারণ ডেটা ফাইলের শেষে নতুন সারি যুক্ত করা হয়। যাহোক, মুছুন এবং আপডেট অপারেশনগুলি আরও সমস্যাযুক্ত: মুছে ফেলা অবশ্যই একটি খালি স্থান ছেড়ে দেয়, বা সারিগুলির অফসেটগুলি পরিবর্তন করতে পারে; সারিগুলির দৈর্ঘ্য সংক্ষিপ্ত হওয়ার সাথে সাথে আপডেটগুলির ক্ষেত্রে একই রকম হয়; আপডেটটি যদি সারিটি দীর্ঘায়িত করে, সারিটি খণ্ডিত হয়। সারিগুলিকে ডিফ্র্যাগমেন্ট করতে এবং খালি স্থান দাবি করতে theOPTIMIZE TABLE
কমান্ড কার্যকর করা আবশ্যক। এই সাধারণ প্রক্রিয়াটির কারণে, সাধারণত মাইআইএসএএম সূচকের পরিসংখ্যানগুলি বেশ নির্ভুল। মাইআইএসএএমের অন্যান্য বড় ত্রুটিগুলি হ'ল লেনদেন সহায়তা এবং বিদেশী কীগুলির অনুপস্থিতি।
InnoDB মাইএসকিউএল এর স্টোরেজ ইঞ্জিন। মাইএসকিউএল 5.5 এবং পরে এটি ডিফল্টরূপে ব্যবহার করুন। এটি বিদেশী কী সমর্থন (ডিক্লারেটিভ রেফারেন্সিয়াল ইন্টিগ্রিটি) এর সাথে স্ট্যান্ডার্ড এসিডি-সম্মতিযুক্ত লেনদেন বৈশিষ্ট্যগুলি সরবরাহ করে। এটি FULLTEXT
ওপেনজিআইএস মান অনুসরণ করে এসকিউএল এবং এক্সএ উভয় লেনদেন, টেবিল স্পেস, সূচক এবং স্থানিক ক্রিয়াকলাপ কার্যকর করে। এটি মাইএসকিউএল এবি দ্বারা বিতরণ করা বেশিরভাগ বাইনারিগুলিকে মান হিসাবে অন্তর্ভুক্ত করা হয়েছে, কিছু ওএম সংস্করণ ব্যতিক্রম। সফ্টওয়্যারটি ওরাকল কর্পোরেশন দ্বৈত লাইসেন্সপ্রাপ্ত; এটি জিএনইউ জেনারেল পাবলিক লাইসেন্সের অধীনে বিতরণ করা হয়েছে, তবে মালিকানাধীন সফ্টওয়্যারটিতে ইনোডিবি সংযুক্ত করতে ইচ্ছুক পক্ষগুলিতে লাইসেন্স দেওয়া যেতে পারে।
মারিয়াডিবিতে আরিয়া নামে একটি স্টোরেজ ইঞ্জিন রয়েছে, এটি "মাইআইএসএএম-এর ক্র্যাশ-নিরাপদ বিকল্প" হিসাবে বর্ণনা করা হয়েছে। মারিয়াডিবি এবং পারকোনা সার্ভার ডিফল্টরূপে এক্সট্রাবিবি নামে ইনোডিবি'র একটি কাঁটাচামচ ব্যবহার করে। এক্সট্রাডিবি পরিচালনা করেছেন পারকোনা। ওরাকল ইনোডিবি'র পরিবর্তনগুলি নিয়মিত এক্সট্রাডিবিতে আমদানি করা হয় এবং কিছু বাগ ফিক্স এবং অতিরিক্ত বৈশিষ্ট্য যুক্ত করা হয়।