নির্দিষ্ট মাইএসকিউএল টেবিলটি কত ডিস্কের স্থান গ্রহণ করছে তা আপনি কীভাবে নির্ধারণ করতে পারেন?


145

নির্দিষ্ট মাইএসকিউএল টেবিলটি কত ডিস্কের স্থান গ্রহণ করছে তা নির্ধারণ করার দ্রুত উপায় আছে কি? টেবিলটি মাইআইএসএএম বা ইনোডব হতে পারে।


পিএইচপিএমআইএডমিনে আপনি কেবল টেবিলের উপর ক্লিক করে স্পেসের ব্যবহার দেখতে পাবেন।
এআর।

এই প্রশ্নের উত্তরগুলি আমাকে আমার সমাধান পেতে সহায়তা করেছে। এমন সরঞ্জামের একটি বিশদ অনুসন্ধান যা ডেটা পেতে প্রতিবার একই কোয়েরি সম্পাদন না করে আমাকে সাহায্য করতে পারে আমাকে মনিওগ , মাইএসকিউএল এন্টারপ্রাইজ মনিটর , পারকোনা টুলকিট দিয়ে যেতে সাহায্য করে । এগুলির সবগুলিই ডিস্কের তথ্যে বিশদ দেয় তবে শেষ পর্যন্ত উন্নত গ্রাফিক্স চার্ট এবং সহজ জিইউআইয়ের জন্য মনোগকে বেছে নিয়েছে।
ম্যাথিউ

উত্তর:


285

একটি টেবিলের জন্য এটি mydb.mytableচালান:

BYTES

SELECT (data_length+index_length) tablesize
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

কিলোবাইট

SELECT (data_length+index_length)/power(1024,1) tablesize_kb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

MEGABYTES

SELECT (data_length+index_length)/power(1024,2) tablesize_mb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

হয়ে GIGABYTES

SELECT (data_length+index_length)/power(1024,3) tablesize_gb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

জেনেরিক

এখানে একটি জেনেরিক ক্যোয়ারী যেখানে সর্বাধিক ইউনিট ডিসপ্লে টিবি (টেরাবাইটস) হয়

SELECT 
    CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',SUBSTR(units,pw1*2+1,2)) DATSIZE,
    CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',SUBSTR(units,pw2*2+1,2)) NDXSIZE,
    CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',SUBSTR(units,pw3*2+1,2)) TBLSIZE
FROM
(
    SELECT DAT,NDX,TBL,IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
    FROM 
    (
        SELECT data_length DAT,index_length NDX,data_length+index_length TBL,
        FLOOR(LOG(IF(data_length=0,1,data_length))/LOG(1024)) px,
        FLOOR(LOG(IF(index_length=0,1,index_length))/LOG(1024)) py,
        FLOOR(LOG(IF(data_length+index_length=0,1,data_length+index_length))/LOG(1024)) pz
        FROM information_schema.tables
        WHERE table_schema='mydb'
        AND table_name='mytable'
    ) AA
) A,(SELECT 'B KBMBGBTB' units) B;

একবার চেষ্টা করে দেখো !!!


6
SELECT (data_length+index_length)/power(1024,2) tablesize_mb, table_name FROM information_schema.tables WHERE table_schema='mydb' order by tablesize_mb;mydbমাপ অনুসারে অর্ডার করা নাম এবং আকার সহ সমস্ত সারণীর একটি তালিকা পেতে ।
kqw

1
প্রথমে আরও বেশি ডিস্কের জায়গা ব্যবহার করে এমন টেবিলগুলি দেখতে "ডিএসসি" অর্ডারের বিধানের সাথে যুক্ত করুন। ;)
এমভিসাগর

সুনির্দিষ্টভাবে বলতে গেলে , বাইনারি উপসর্গগুলি ব্যবহার করার সময় আপনি ইউনিটগুলিকে কী বাই বাইটস (কিবি), মাই বাই বাইটস (এমআইবি) এবং জিআই বাই বাইটস (জিআইবি) বলতে চাইতে পারেন 2 অথবা, আপনি দশমিক উপসর্গ (1000 এর শক্তির সাথে গুণ) ব্যবহার করতে পারেন এবং তারপরে ইউনিটগুলি কী লো বাইটস (কেবি), আমাকে গা বাইটস (এমবি) এবং জি জি বাইটস (জিবি) কল করতে পারেন। আরও দেখুন: en.wikedia.org/wiki/Binary_prefix
মার্টন ট্যামিস

কেউ কি এমএসএসকিউএল একইভাবে করতে জানেন?
ইভান ইয়ুরচেঙ্কো

@RolandoMySQLDBA, আপনি এই উপর সুপারিশ যায়নি stackoverflow.com/questions/47976837/...
davidb

15

এমবিতে শীর্ষ 20 টি বৃহত্তম টেবিল পেতে দ্রুত বিট এসকিউএল।

SELECT table_schema, table_name,
  ROUND((data_length+index_length)/POWER(1024,2),2) AS tablesize_mb
FROM information_schema.tables
ORDER BY tablesize_mb DESC LIMIT 20;

আশা করি এটি কারও উপকারী!


12

এটি InnoDB টেবিলগুলির জন্য সঠিক হবে না। ডিস্কে থাকা আকারটি ক্যোয়ারির মাধ্যমে রিপোর্ট করা চেয়ে বড়।

আরও তথ্যের জন্য দয়া করে পারকোনার এই লিঙ্কটি দেখুন।

https://www.percona.com/blog/2008/12/16/how-much-space-does-empty-innodb-table-take/


2

ডিফল্টরূপে মাইএসকিএল সহ লিনাক্স ইনস্টল করুন:

[you@yourbox]$ ls -lha /var/lib/mysql/<databasename>

NIXCRAFT এর mysql db লোকেশনের উপর ভিত্তি করে


কোনও বিশেষ টেবিলের মাধ্যমে নেওয়া স্থানটি কীভাবে পরিমাপ করা যায় তা প্রশ্ন জিজ্ঞাসা করছে ।
ফ্লাইম

@ শারিক আবদুল্লাহ যদি আপনি ইনডোডবি_ফাইলে_ টেবিল ব্যবহার করেন তবে এটি কাজ করবে যা পূর্বনির্ধারিত নয়, তবে আমি মনে করি এটি খুব সাধারণ এবং / অথবা প্রস্তাবিত (কেউ সহজেই আমাকে ভুল প্রমাণ করতে পারে, কেবল আমার ধারণা)।
সিউक्स

@ সিয়োক্স, হতে পারে তবে আমি যে কোনও প্রস্তাবিত সার্ভার সেটআপগুলিতে এসেছি তা এটি ব্যবহার করে দেখিনি। সুতরাং আপনি ঠিক থাকতে পারেন, কিন্তু এটি ডিফল্ট না হওয়ায় তিনি এটি খুঁজে পেতে পারেন না। এছাড়াও, আমি মাইআইএসএএম এর তুলনায় ইনোডাব ফাংশনগুলি বেশ আলাদা বলে মনে করি। সুতরাং আপনার কাছে ফাইল আকার থাকলেও এটি মাইএসএএমের ক্ষেত্রে যথাযথ হতে পারে না। তবে আপনি ঠিক বলেছেন যে এটির একটি সমাধান হতে পারে। আমি ব্যক্তিগতভাবে মাইএসকিউএল কমান্ডগুলি ফাইলের আকার মাপার চেয়ে এই তথ্যটি পেতে পছন্দ করি।
শারিক আবদুল্লাহ

2

রোল্যান্ডমাইএসকিউএলডিবিএর উত্তরের ভিত্তিতে আমি মনে করি যে আমরা একটি সারণীতে প্রতিটি স্কিমার আকার পেতে উপরেরটি ব্যবহার করতে পারি:

SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb 
    FROM information_schema.tables GROUP BY table_schema;

সত্যিই ভাল লেগেছে!


0

আপনি সম্ভবত ফাইলগুলির আকারটি দেখতে পারেন ...

প্রতিটি টেবিলটি ফোল্ডারের অভ্যন্তরে কয়েকটি পৃথক ফাইলের মধ্যে সংরক্ষণ করা হয় যা আপনি আপনার ডাটাবেস হিসাবে ডেকেছিলেন named এই ফোল্ডারগুলি mysql ডেটা ডিরেক্টরিতে সংরক্ষণ করা হয়।

সেখান থেকে আপনি ডিস্কের টেবিলের আকার পেতে একটি 'du -sh। *' করতে পারেন।


এটি কেবল মাইআইএসএএম ডাটাবেসের জন্য কাজ করে। ওপি একটি সমাধান চেয়েছিল যা ইনোডিবি-তেও কাজ করে।
বিগস

0

থেকে নেওয়া আমি কিভাবে পরীক্ষা কত ডিস্ক স্পেস আমার ডাটাবেসের ব্যবহার করছে না?

phpMyAdminবাম ফ্রেমে ডাটাবেস নামের উপর ক্লিক করে এবং ডান ফ্রেমে টেবিলগুলির জন্য আকারটি পড়ে আপনি নিজের কন্ট্রোল প্যানেলে দেখে মাইএসকিউএল টেবিলের আকারটি পরীক্ষা করতে পারেন ।

নীচের প্রশ্নের পাশাপাশি একই তথ্য পেতে সহায়তা করবে bytes

select SUM(data_length) + SUM(index_length) as total_size 
from information_schema.tables 
where table_schema = 'db_name' 
and table_name='table_name';

এটি ধরে নিয়েছে phpMyAdmin ইনস্টল করা আছে
thebigjc

-1

আমি কেবল অনুসরণ হিসাবে ' mysqldiskusage ' সরঞ্জামটি ব্যবহার করব

$ mysqldiskusage --server=user:password@localhost mydbname
# Source on localhost: ... connected.

# Database totals:
+------------+----------------+
| db_name    |         total  |
+------------+----------------+
| mydbaname  | 5,403,033,600  |
+------------+----------------+

Total database disk usage = 5,403,033,600 bytes or 5.03 GB

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