আমি একটি মাইএসকিউএল ডাটাবেসে সমস্ত টেবিলের আকার পেতে এই ক্যোয়ারীটি চালাতে পারি:
show table status from myDatabaseName;
ফলাফলগুলি বুঝতে কিছুটা সহায়তা চাই। আমি বৃহত্তম আকারের টেবিলগুলি সন্ধান করছি।
কোন কলামে আমার নজর দেওয়া উচিত?
আমি একটি মাইএসকিউএল ডাটাবেসে সমস্ত টেবিলের আকার পেতে এই ক্যোয়ারীটি চালাতে পারি:
show table status from myDatabaseName;
ফলাফলগুলি বুঝতে কিছুটা সহায়তা চাই। আমি বৃহত্তম আকারের টেবিলগুলি সন্ধান করছি।
কোন কলামে আমার নজর দেওয়া উচিত?
উত্তর:
আপনি টেবিলের আকারটি দেখানোর জন্য এই ক্যোয়ারীটি ব্যবহার করতে পারেন (যদিও আপনাকে প্রথমে ভেরিয়েবলগুলির বিকল্প প্রয়োজন):
SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
AND table_name = "$TABLE_NAME";
বা প্রতিটি ডাটাবেসে প্রতিটি টেবিলের আকার তালিকাভুক্ত করার জন্য এই ক্যোয়ারী, বৃহত্তম বৃহত্তম:
SELECT
table_schema as `Database`,
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
ORDER BY (data_length + index_length) DESC;
AND table_name IN ('table_1', 'table_2', 'table_3');
VARCHAR
এবং BLOB
প্রকার?
SELECT TABLE_NAME AS "Table Name",
table_rows AS "Quant of Rows", ROUND( (
data_length + index_length
) /1024, 2 ) AS "Total Size Kb"
FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = 'YOUR SCHEMA NAME/DATABASE NAME HERE'
LIMIT 0 , 30
আপনি "থেকে স্কিমা নামটা জানা যাবে information_schema " -> স্কিমাটার টেবিল -> " SCHEMA_NAME " কলামে
অতিরিক্ত হিসাবে আপনি নিম্নলিখিত হিসাবে mysql ডাটাবেস আকার পেতে পারেন ।
SELECT table_schema "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
GROUP BY table_schema;
ফলাফল
DB Name | DB Size in MB
mydatabase_wrdp 39.1
information_schema 0.0
আপনি এখানে অতিরিক্ত বিশদ পেতে পারেন ।
আপনি যদি বর্তমানে নির্বাচিত ডাটাবেসটি ব্যবহার করতে কোনও প্রশ্ন চান। কেবল এই কোয়েরিটি অনুলিপি করুন। (কোনও পরিবর্তনের প্রয়োজন নেই)
SELECT table_name ,
round(((data_length + index_length) / 1024 / 1024), 2) as SIZE_MB
FROM information_schema.TABLES
WHERE table_schema = DATABASE() ORDER BY SIZE_MB DESC;
SIZE_MB
তথ্য_চেমি T
ওয়ার্কবেঞ্চ ব্যবহার করে অনেক তথ্য পাওয়ার সহজ উপায় রয়েছে:
স্কিমা নামটি ডান ক্লিক করুন এবং "স্কিমা পরিদর্শক" ক্লিক করুন।
ফলস্বরূপ উইন্ডোতে আপনার কয়েকটি ট্যাব রয়েছে। প্রথম ট্যাব "তথ্য" এমবিতে ডাটাবেসের আকারের মোটামুটি অনুমান দেখায়।
দ্বিতীয় ট্যাব, "টেবিলগুলি" প্রতিটি সারণির জন্য ডেটার দৈর্ঘ্য এবং অন্যান্য বিবরণ প্রদর্শন করে।
সমস্ত টেবিলের আকার:
মনে করুন আপনার ডাটাবেস বা TABLE_SCHEMA
নামটি "নিউজ_লেটার্ট"। তারপরে এই কোয়েরিটি ডাটাবেসে সমস্ত সারণীর আকার প্রদর্শন করবে।
SELECT
TABLE_NAME AS `Table`,
ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024),2) AS `Size (MB)`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "news_alert"
ORDER BY
(DATA_LENGTH + INDEX_LENGTH)
DESC;
আউটপুট:
+---------+-----------+
| Table | Size (MB) |
+---------+-----------+
| news | 0.08 |
| keyword | 0.02 |
+---------+-----------+
2 rows in set (0.00 sec)
নির্দিষ্ট টেবিলের জন্য:
আপনার ধরুন TABLE_NAME
হয় "সংবাদ" । তারপরে এসকিউএল কোয়েরি হবে-
SELECT
TABLE_NAME AS `Table`,
ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024),2) AS `Size (MB)`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "news_alert"
AND
TABLE_NAME = "news"
ORDER BY
(DATA_LENGTH + INDEX_LENGTH)
DESC;
আউটপুট:
+-------+-----------+
| Table | Size (MB) |
+-------+-----------+
| news | 0.08 |
+-------+-----------+
1 row in set (0.00 sec)
নিম্নলিখিত শেল কমান্ড চেষ্টা করুন ( DB_NAME
আপনার ডাটাবেসের নাম দিয়ে প্রতিস্থাপন ):
mysql -uroot <<<"SELECT table_name AS 'Tables', round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema = \"DB_NAME\" ORDER BY (data_length + index_length) DESC;" | head
ড্রুপাল / ড্রশ সমাধানের জন্য, নিম্নলিখিত উদাহরণ স্ক্রিপ্টটি পরীক্ষা করুন যা ব্যবহারে বৃহত্তম সারণি প্রদর্শন করবে:
#!/bin/sh
DB_NAME=$(drush status --fields=db-name --field-labels=0 | tr -d '\r\n ')
drush sqlq "SELECT table_name AS 'Tables', round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema = \"${DB_NAME}\" ORDER BY (data_length + index_length) DESC;" | head -n20
বাশ কমান্ড লাইন ব্যবহার না করে এটিকে কাজ করার আর একটি উপায়।
for i in
mysql -NB -e 'show databases'
; do echo $i; mysql -e "SELECT table_name AS 'Tables', round(((data_length+index_length)/1024/1024),2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema =\"$i\" ORDER BY (data_length + index_length) DESC" ; done
আমার বিশেষ প্রয়োজন স্যুট করতে চ্যাপমিকের উত্তর থেকে অভিযোজিত।
কেবলমাত্র আপনার ডাটাবেসের নাম নির্দিষ্ট করুন, তারপরে সমস্ত টেবিলগুলি সাজানো ক্রমে সাজান - LARGEST থেকে ছোট টেবিলকে নির্বাচিত ডাটাবেসের অভ্যন্তরে। আপনার ডাটাবেসের নামটি প্রতিস্থাপন করতে কেবলমাত্র 1 টি ভেরিয়েবলের প্রয়োজন।
SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) AS `size`
FROM information_schema.TABLES
WHERE table_schema = "YOUR_DATABASE_NAME_HERE"
ORDER BY size DESC;
আপনার যদি ssh
অ্যাক্সেস থাকে তবে আপনি সম্ভবত চেষ্টা করতেও du -hc /var/lib/mysql
(বা datadir
আপনার হিসাবে সেট করা আলাদা my.cnf
) চেষ্টা করতে পারেন ।
সারি এবং স্থান দখল করা সংখ্যা এবং এটি দ্বারা ক্রম সংখ্যা দেখানোর আর একটি উপায়।
SELECT
table_schema as `Database`,
table_name AS `Table`,
table_rows AS "Quant of Rows",
round(((data_length + index_length) / 1024 / 1024/ 1024), 2) `Size in GB`
FROM information_schema.TABLES
WHERE table_schema = 'yourDatabaseName'
ORDER BY (data_length + index_length) DESC;
এই ক্যোয়ারিতে আপনাকে কেবলমাত্র স্ট্রিংয়ের বিকল্প দিতে হবে "হ'ল" আপনার ডেটাবেসনেম "।
আমি দেখতে পেয়েছি বিদ্যমান উত্তরগুলি আসলে ডিস্কে টেবিলগুলির আকার দেয় না, যা আরও সহায়ক। ডেটা_লেন্থ এবং ইনডেক্সের উপর ভিত্তি করে সারণির আকারের তুলনায় এই কোয়েরিটি আরও সঠিক ডিস্কের অনুমান দেয়। আমাকে এটি AWS আরডিএস উদাহরণের জন্য ব্যবহার করতে হয়েছিল যেখানে আপনি শারীরিকভাবে ডিস্কটি পরীক্ষা করতে পারবেন না এবং ফাইলের আকারগুলি পরীক্ষা করতে পারবেন না।
select NAME as TABLENAME,FILE_SIZE/(1024*1024*1024) as ACTUAL_FILE_SIZE_GB
, round(((data_length + index_length) / 1024 / 1024/1024), 2) as REPORTED_TABLE_SIZE_GB
from INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES s
join INFORMATION_SCHEMA.TABLES t
on NAME = Concat(table_schema,'/',table_name)
order by FILE_SIZE desc
শেষে ডাটাবেসের মোট আকার গণনা করুন:
(SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
)
UNION ALL
(SELECT
'TOTAL:',
SUM(round(((data_length + index_length) / 1024 / 1024), 2) )
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
)
SELECT TABLE_NAME AS table_name,
table_rows AS QuantofRows,
ROUND((data_length + index_length) /1024, 2 ) AS total_size_kb
FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = 'db'
ORDER BY (data_length + index_length) DESC;
উপরের সমস্ত 2 মাইএসকিএল-তে পরীক্ষা করা হয়
এটি মাইএসকিএল-তে পরীক্ষা করা উচিত, পোস্টগ্রিস্কিল নয়:
SELECT table_schema, # "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) # "DB Size in MB"
FROM information_schema.tables
GROUP BY table_schema;