آیا تا‌ کنون هنگام بررسی phpMyAdmin یا لیست دیتابیس‌های خود در سی‌پنل، با نامی نا آشنا به اسم information_schema برخورد کرده‌اید؟ شاید در نگاه اول تصور کرده‌اید که این یک فایل مزاحم، یک ویروس یا دیتابیسی اضافی است که فضای هاست شما را اشغال کرده و باید فوراً حذف شود! اما دست نگه دارید؛ این دیتابیس در واقع مغز متفکر و دفترچه راهنمای سرور SQL شماست.

information_schema database یک دیتابیس استاندارد و پیش‌ فرض در MySQL و SQL Server است که حاوی “اطلاعاتِ اطلاعات” یا همان متادیتا (Metadata) می‌باشد. به زبان ساده می توان گفت، داده‌های اصلی شما (مثل نام کاربران، محصولات و…) در دیتابیس‌های خودتان ذخیره می‌شوند، اما اطلاعات مربوط به اینکه دیتابیس شما چه ساختاری دارد، چه جداولی ساخته‌اید و هر جدول چقدر حجم دارد، در اینجا نگهداری می‌شود.

💡 information_schema چیست؟ دیتابیسی فقط خواندنی (Read-only) که نقشه‌ی کل ساختار، دسترسی‌ها و مشخصات فنی سایر دیتابیس‌ها را در خود جای داده است.
✅ نکته کلیدی: هرگز سعی نکنید این دیتابیس را حذف کنید؛ بدون آن، MySQL هویت خود را از دست می‌دهد!

اگر به دنبال پاسخی برای سوال آیا می‌توانم این دیتابیس را پاک کنم؟ یا چگونه بفهمم کدام جدول فضای هاست را پر کرده است؟ هستید و یا اگر مدیر سرور هستید که می‌خواهد عیب‌یابی حرفه‌ای انجام دهید، یا برنامه‌نویسی که به دنبال نوشتن کوئری‌های داینامیک است، این مقاله دقیقاً برای شماست. در ادامه یاد می‌گیرید چطور مثل یک متخصص دیتابیس رفتار کنید.

svgexport 58 information_schema database چیست؟ راهنمای جامع مدیریت متادیتا برای مدیران سرورهاست سی پنل وب داده
هاست cPanel با SSL رایگان، پهنای باند نامحدود و امنیت پیشرفته در ایران و هلند
برای مشاهده پلن‌های
هاست 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) و فایل‌های کانفیگ جمع‌آوری کرده و به صورت یک جدول ساختگی به شما نمایش می‌دهد.

به همین دلیل است که:

  1. نمی‌توانید آن را حذف کنید (چون فایلی برای حذف شدن ندارد).
  2. نمی‌توانید در آن چیزی بنویسید (چون فقط بازتاب دهنده وضعیت فعلی سرور است).
  3. بسیار سریع است (چون مستقیماً با هسته 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 database

آموزش کاربرد 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 :

  1. ما از information_schema.TABLES استفاده کردیم که تمام اطلاعات جداول در آن است.
  2. data_length (حجم داده) و index_length (حجم ایندکس‌ها) را جمع کردیم.
  3. نتیجه را بر 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');
📌 نکته مهم: دیتابیس‌های سیستمی خود MySQL ممکن است به صورت پیش‌فرض MyISAM باشند؛ به همین دلیل در خط آخر آن‌ها را استثنا کردیم.

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_schemaperformance_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 حاوی متادیتای دیتابیس است و به ما کمک می‌کند تا بدون نیاز به ابزارهای جانبی، مدیریت دقیقی روی حجم و ساختار داده‌ها داشته باشیم.

به‌عنوان یک جمع‌بندی نهایی:

  1. هرگز سعی نکنید information_schema را پاک کنید.
  2. برای بدست آوردن حجم دیتابیس با کوئری، بهترین منبع جدول TABLES در این دیتابیس است.
  3. استفاده صحیح از این ابزار، مرز بین یک کاربر مبتدی و یک مدیر سرور حرفه‌ای است.

امیدواریم این مقاله از بلاگ وب‌ داده دید شما را نسبت به فایل‌های سیستمی MySQL تغییر داده باشد. اگر تجربه خاصی در استفاده از کوئری‌های این دیتابیس دارید یا با خطای عجیبی مواجه شده‌اید، حتماً در بخش نظرات با ما در میان بگذارید.

سوالات متداول درباره information_schema database

آیا می‌توانم دیتابیس information_schema را حذف کنم؟

خیر، به هیچ وجه. حذف یا دستکاری این دیتابیس باعث می‌شود MySQL دیگر نتواند جداول و دسترسی‌های شما را شناسایی کند و عملاً سرویس دیتابیس شما از کار می‌افتد.

سارا صالحی ریحانی
سارا صالحی ریحانی

کارشناس IT، وردپرس و کپی‌رایتر حوزه هاستینگ. پس از سال‌ها تجربه در شبکه، به دنیای کلمات و تولید محتوا وارد شدم و حالا در تیم وب‌داده، مفاهیم پیچیده هاست و سرور را به زبانی ساده و کاربردی برای علاقه‌مندان به دنیای شبکه می‌نویسم.

مقاله‌ها: 122
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *