آیا تا کنون هنگام بررسی phpMyAdmin یا لیست دیتابیسهای خود در سیپنل، با نامی نا آشنا به اسم information_schema برخورد کردهاید؟ شاید در نگاه اول تصور کردهاید که این یک فایل مزاحم، یک ویروس یا دیتابیسی اضافی است که فضای هاست شما را اشغال کرده و باید فوراً حذف شود! اما دست نگه دارید؛ این دیتابیس در واقع مغز متفکر و دفترچه راهنمای سرور SQL شماست.
information_schema database یک دیتابیس استاندارد و پیش فرض در MySQL و SQL Server است که حاوی “اطلاعاتِ اطلاعات” یا همان متادیتا (Metadata) میباشد. به زبان ساده می توان گفت، دادههای اصلی شما (مثل نام کاربران، محصولات و…) در دیتابیسهای خودتان ذخیره میشوند، اما اطلاعات مربوط به اینکه دیتابیس شما چه ساختاری دارد، چه جداولی ساختهاید و هر جدول چقدر حجم دارد، در اینجا نگهداری میشود.
اگر به دنبال پاسخی برای سوال آیا میتوانم این دیتابیس را پاک کنم؟ یا چگونه بفهمم کدام جدول فضای هاست را پر کرده است؟ هستید و یا اگر مدیر سرور هستید که میخواهد عیبیابی حرفهای انجام دهید، یا برنامهنویسی که به دنبال نوشتن کوئریهای داینامیک است، این مقاله دقیقاً برای شماست. در ادامه یاد میگیرید چطور مثل یک متخصص دیتابیس رفتار کنید.
هاست cPanel
روی دکمه زیر کلیک کنید
آنچه در این مقاله میخوانید:
information_schema database چیست؟
برای اینکه دقیقاً بدانید دیتابیس information_schema چیست، باید آن را از دو زاویه بررسی کنیم: زاویه ساده (تشبیهی) و زاویه فنی (معماری).
1.تشبیه ساده: اتاق فرمان نامرئی
تصور کنید سرور شما یک کتابخانه بزرگ است، دیتابیسهای شما (مثل دیتابیس وردپرس یا فروشگاه) کتابهای داخل قفسه هستند. اما information_schema خودِ کتاب نیست؛ بلکه “سیستم نمایهسازی و کارتهای کتابخانه” است که میگوید:
- کدام کتاب در کدام قفسه است؟
- هر کتاب چند صفحه دارد؟ (حجم جداول)
- چه کسی اجازه دارد کتاب را امانت بگیرد؟ (دسترسیها – Privileges)
2. نگاه فنی: دیتابیس مجازی (Virtual Database)
از نظر فنی، information_schema با سایر دیتابیسهای شما یک تفاوت بنیادین دارد: این دیتابیس وجود خارجی روی هارد دیسک ندارد.
- دیتابیسهای معمولی: وقتی یک دیتابیس میسازید، پوشهای فیزیکی در مسیر
/var/lib/mysqlایجاد میشود که حاوی فایلهای دیتا (مثل.ibdیا.MYD) است. - information_schema: هیچ فایل فیزیکی ندارد! این دیتابیس مجموعهای از Views است. وقتی شما از آن کوئری میگیرید، MySQL در همان لحظه اطلاعات را از حافظه رم (RAM) و فایلهای کانفیگ جمعآوری کرده و به صورت یک جدول ساختگی به شما نمایش میدهد.
به همین دلیل است که:
- نمیتوانید آن را حذف کنید (چون فایلی برای حذف شدن ندارد).
- نمیتوانید در آن چیزی بنویسید (چون فقط بازتاب دهنده وضعیت فعلی سرور است).
- بسیار سریع است (چون مستقیماً با هسته MySQL صحبت میکند).
ساختار شماتیک information_schema database در سرور:
MySQL Server Instance
⬇️
ROOT (Access Level)
├─ [Your_Website_DB] (دادههای اصلی شما)
├─ [mysql] (تنظیمات هسته و یوزرها)
├─ [performance_schema] (مانیتورینگ سرعت)
└─ [information_schema] 👈 (دیکشنری داده / Metadata)
├── TABLES (لیست تمام جداول و حجم آنها)
├── COLUMNS (لیست ستونها و تایپ دیتا)
├── USER_PRIVILEGES (سطوح دسترسی)
└── STATISTICS (اینکسها)
در نسخههای جدید MySQL (نسخه 8.0 به بعد)، پیادهسازی information_schema database بهینه شده و اطلاعات مستقیماً از Data Dictionary خوانده میشوند که سرعت کوئریها را تا 100 برابر نسبت به نسخههای قدیمی افزایش داده است.
دلایل اهمیت information_schema database
شاید از خودتان بپرسید اگر این دیتابیس فقط اطلاعات را نمایش میدهد، چرا وجودش حیاتی است؟ وجود متادیتای دیتابیس (Metadata) برای سلامت سرور و توسعه نرمافزار ضروری است.
دلایل اهمیت این دیتابیس عبارتند از:
- استاندارد جهانی (ANSI SQL): این دیتابیس فقط مختص MySQL نیست؛ در SQL Server و PostgreSQL هم با همین نام وجود دارد. این یعنی کدهایی که برای خواندن ساختار مینویسید، پرتابل هستند.
- عیبیابی فضا (Disk Usage Analysis): تنها راه دقیق برای اینکه بفهمید کدام جدول در بین صدها دیتابیس، فضای سرور را پر کرده، کوئری گرفتن از جدول
TABLESدر این دیتابیس است. - امنیت و دسترسی: بررسی اینکه کدام یوزرها به کدام دیتابیسها دسترسی دارند، از طریق جداول
USER_PRIVILEGESوSCHEMA_PRIVILEGESانجام میشود. - خودکارسازی (Automation): فریمورکهای برنامهنویسی (مثل Laravel یا Django) از این دیتابیس استفاده میکنند تا بفهمند ساختار جداول شما چیست و مدلها را بسازند.

آموزش کاربرد information_schema در mysql
در این بخش به صورت عملی و با اجرای کوئریهای واقعی، قدرت این دیتابیس را بررسی می کنیم که احتمالاً همین حالا در سرور خود با آنها دست و پنجه نرم میکنید. فرض کنید سرور شما با مشکل کمبود فضا مواجه شده یا میخواهید جداول قدیمی را پیدا کنید.
1- بدست آوردن حجم دیتابیس با کوئری
یکی از مهمترین کاربردهای information_schema database، محاسبه دقیق حجم دادههاست. فایلهای دیتابیس در سرور ممکن است پراکنده باشند، اما با این دستور میتوانید لیست 10 جدول حجیم کل سرور را مشاهده کنید.
دستور SQL برای نمایش حجم جداول (به مگابایت):
SELECT
table_schema AS "Database Name",
table_name AS "Table Name",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
ORDER BY (data_length + index_length) DESC
LIMIT 10; تحلیل کوئری نمایش حجم جداول SQL :
- ما از
information_schema.TABLESاستفاده کردیم که تمام اطلاعات جداول در آن است. data_length(حجم داده) وindex_length(حجم ایندکسها) را جمع کردیم.- نتیجه را بر 1024 دو بار تقسیم کردیم تا بایت به مگابایت تبدیل شود.
2- پیدا کردن جداول قدیمی (MyISAM)
موتور MyISAM قدیمی است و در صورت کرش کردن سرور، ممکن است اطلاعات آن آسیب ببیند. استاندارد جدید InnoDB است. با استفاده از جداول information_schema میتوانید تمام جداولی که هنوز MyISAM هستند را پیدا کنید.
SELECT table_schema, table_name, engine
FROM information_schema.TABLES
WHERE engine = 'MyISAM'
AND table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys'); 3- بررسی ستونهای خاص در کل سرور
فرض کنید میخواهید بدانید در کل دیتابیسهای سرور، کدام جداول ستونی به نام phone_number دارند. این کار بدون دیکشنری داده (Data Dictionary) تقریباً غیرممکن است.
SELECT table_schema, table_name
FROM information_schema.COLUMNS
WHERE column_name = 'phone_number'; تفاوت performance_schema و information_schema
بسیاری از کاربران این دو دیتابیس سیستمی را با هم اشتباه میگیرند. اگرچه هر دو برای مدیریت داخلی MySQL هستند، اما هدفهای کاملاً متفاوتی دارند.
به زبان ساده تر اگر سرور دیتابیس را یک خودرو در نظر بگیریم، تفاوت این دو کاملاً شفاف میشود. دیتابیس information_schema حکم دفترچه راهنما و مشخصات فنی را دارد که میگوید این خودرو چند چرخ دارد و حجم باک آن چقدر است (ساختار و حجم جداول). اما performance_schema دقیقاً مثل دستگاه دیاگ (Diagnostic) عمل میکند که به صورت زنده نشان میدهد موتور چقدر داغ کرده، مصرف سوخت لحظهای چقدر است و کدام قطعه باعث کندی حرکت شده است (مانیتورینگ سرعت کوئریها و منابع).
در جدول زیر تفاوتهای کلیدی performance_schema و information_schema را مشاهده میکنید:
| ویژگی | information_schema | performance_schema |
| ماهیت | دیکشنری داده (Metadata) | ابزار مانیتورینگ عملکرد |
| نوع اطلاعات | ایستا (نام جداول، نوع ستون، دسترسیها) | پویا (زمان اجرای کوئری، قفلها، مصرف مموری) |
| هدف اصلی | پاسخ به سوال “چه چیزی در دیتابیس است؟” | پاسخ به سوال “چقدر طول میکشد؟” |
| قابلیت ویرایش | خیر (فقط خواندنی) | محدود (فقط جداول تنظیمات (setup_*) قابل تغییر هستند) |
| تاثیر بر سرعت | بسیار ناچیز | در صورت فعالسازی کامل، کمی سربار دارد |
performance_schema بروید، اما اگر دیسک شما پر شده است، راه حل در information_schema database است.خدمات مدیریت دیتابیس وبداده؛ امنیت و سرعت تضمین شده
مدیریت دیتابیسهای حجیم و تحلیل متادیتااز طریق phpMyAdmin، نیازمند هاستی با عملکرد بالا و امنیت قوی است. ما سرویس هاست cPanel پرسرعت وبداده را به گونهای طراحی کردهایم که دغدغههای فنی شما به حداقل برسد و بتوانید با خیال راحت روی توسعه سایت تمرکز کنید.
چرا دیتابیسهای شما در هاست وب داده امنتر هستند؟
✅ بکاپگیری روزانه: هر شب از کل اطلاعات و دیتابیس شما پشتیبانگیری خودکار انجام میشود تا در صورت بروز هرگونه مشکل، دادههایتان قابل بازیابی باشد.
✅ هارد NVMe پرسرعت: سرعت اجرای کوئریهای شما، حتی کوئریهای سنگین روی information_schema، با دیسکهای NVMe SSD Raid 10 به شکل چشمگیری افزایش مییابد.
✅ SSL رایگان و امنیت پیشرفته: با ابزارهای امنیتی مانند Imunify360 و گواهی SSL رایگان، اطلاعات دیتابیس شما در برابر تهدیدات محافظت میشود.
✅ phpMyAdmin با دسترسی کامل: مدیریت حرفهای جداول، اجرای کوئریهای سفارشی روی information_schema و بهینهسازی دیتابیس، همه از طریق پنل سیپنل در دسترس شماست.
✅ انتخاب لوکیشن ایران یا هلند: بسته به نیاز مخاطبان سایتتان، میتوانید موقعیت سرور را انتخاب کنید.
نتیجهگیری؛ کاربرد information_schema
information_schema database نه یک فایل اضافی است و نه یک تهدید؛ بلکه نقشهی راه و قطب نمای سرور شماست. در این مقاله با هم آموختیم که این database حاوی متادیتای دیتابیس است و به ما کمک میکند تا بدون نیاز به ابزارهای جانبی، مدیریت دقیقی روی حجم و ساختار دادهها داشته باشیم.
بهعنوان یک جمعبندی نهایی:
- هرگز سعی نکنید
information_schemaرا پاک کنید. - برای بدست آوردن حجم دیتابیس با کوئری، بهترین منبع جدول TABLES در این دیتابیس است.
- استفاده صحیح از این ابزار، مرز بین یک کاربر مبتدی و یک مدیر سرور حرفهای است.
امیدواریم این مقاله از بلاگ وب داده دید شما را نسبت به فایلهای سیستمی MySQL تغییر داده باشد. اگر تجربه خاصی در استفاده از کوئریهای این دیتابیس دارید یا با خطای عجیبی مواجه شدهاید، حتماً در بخش نظرات با ما در میان بگذارید.
سوالات متداول درباره information_schema database
آیا میتوانم دیتابیس information_schema را حذف کنم؟
خیر، به هیچ وجه. حذف یا دستکاری این دیتابیس باعث میشود MySQL دیگر نتواند جداول و دسترسیهای شما را شناسایی کند و عملاً سرویس دیتابیس شما از کار میافتد.





