আমি কীভাবে জানতে পারি যে কোনও মাইএসকিএল টেবিলটি মাইআইএসএএম বা ইনোডিবি ইঞ্জিন ব্যবহার করছে?


86

মাইএসকিউএলে, কোনও একক টেবিলের জন্য কোনও নির্দিষ্ট ডাটাবেসের জন্য কোনও স্টোরেজ ইঞ্জিন নির্দিষ্ট করার কোনও উপায় নেই। তবে, আপনি একটি সেশনের সাথে ব্যবহার করার জন্য কোনও স্টোরেজ ইঞ্জিন নির্দিষ্ট করতে পারেন:

SET storage_engine=InnoDB;

সুতরাং আপনাকে প্রতিটি টেবিলের জন্য এটি নির্দিষ্ট করতে হবে না।

আমি কীভাবে নিশ্চিত করব, যদি সত্যই সমস্ত টেবিল InnoDB ব্যবহার করে?


উত্তর:


138

আপনি যদি শো ক্রেটিট টেবিল ব্যবহার করেন, আপনাকে ক্যোয়ারির বাইরে ইঞ্জিনটি পার্স করতে হবে।

INFORMATION_SCHEMA ডাটাবেস থেকে নির্বাচন করা দুর্বল অনুশীলন, যেহেতু ডেভসরা যে কোনও সময়ে এর স্কিমা পরিবর্তন করার অধিকার সংরক্ষণ করে (যদিও এটি সম্ভাবনা কম)।

ব্যবহারের সঠিক ক্যোয়ারী হ'ল টেবিল পরিস্থিতি - আপনি একটি ডাটাবেসে সমস্ত টেবিলের তথ্য পেতে পারেন:

SHOW TABLE STATUS FROM `database`;

বা একটি নির্দিষ্ট টেবিলের জন্য:

SHOW TABLE STATUS FROM `database` LIKE 'tablename';

আপনি যে কলামটি ফিরে পাবেন তার মধ্যে একটি হ'ল ইঞ্জিন।


আপনার পছন্দসই জিনিসগুলির জন্য তথ্য স্কিমা দেখার সবসময় আপনার অনুমতি ব্যতীত +1।
কোনারাক

@ কনারাক আহ, যথেষ্ট সত্য - আমি উত্তরটি সংশোধন করব। অন্যদিকে , আমি কিছু বাগ দেখেছি যেখানে তথ্য_শেমার থেকে নির্বাচন করা সেই ক্ষেত্রে কাজ করে না যেখানে লোকদের সঠিক অনুমতি ছিল।
তেহশ্রাইক

16
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'

INFORMATION_SCHEMA- এ কেবলমাত্র সতর্কতা ডেটা ক্যাশেড, সুতরাং আপনার প্রদত্ত বিবৃতিটির আগে ফ্লুশ ট্যাবলেটগুলি ব্যবহার করা ভাল
ওএমজি পনিস

এটি আমাকে ডিবিতে ইনোডিবি সারণির সংখ্যা গণনা করতে সহায়তা করে।
আনন 30

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