Pertanyaannya tampaknya lebih merupakan masalah yang dibuat oleh database target yang jawabannya hanya dapat diberikan oleh database sumber dan karena itu tidak ada hubungannya sama sekali dengan Replicate yang 'hanya pembawa pesan' - yang mungkin akan ditembak oleh
Saat Anda mempertimbangkan solusi untuk meringkas ukuran kolom untuk tabel database sumber, pastikan untuk mempertimbangkan dampak byte vs karakter di mana satu karakter terkadang membutuhkan hingga 4 byte, tetapi biasanya tidak. Batasan target adalah byte, yang terbaik yang saya tahu
Setiap sumber DB memiliki solusinya sendiri untuk pertanyaan tersebut. Jika sumbernya adalah Oracle, itu sederhana. Cukup kueri dba_tab_columns atau user_tab_columns untuk panjang_data dengan 'di mana' pada nama_tabel sesuai kebutuhan
solusi Oracle grosir. pilih table_name "Table Name", sum[data_length] "Max byte" dari grup dba_tab_columns berdasarkan nama_tabel;
Beberapa database mungkin tidak memiliki data ini yang siap untuk kueri. Buat saja definisi tabel dan masukkan ke skrip untuk membuat tambahan?
Atau jalankan saja tugas dan lihat apakah gagal atau tidak, memberikan umpan balik kepada tim desain Anda untuk meninjau data minimal kritis tentang kegagalan
Apa sumber DB yang digunakan? . 'stackexchange' mungkin memiliki. Apakah Anda mencoba di sana?
Saya tidak yakin apa yang Anda tanyakan?
Apakah Anda ingin jumlah RAM yang digunakan untuk mengalokasikan set hasil?
Apakah Anda menginginkan ukuran data kolom tertentu [tidak termasuk overhead lainnya]?
Untuk yang terakhir
PILIH PANJANG[nama] + PANJANG[detail] + 4 ukuran AS DARI contoh WHERE id=1;
LENGTH[] mengembalikan panjang byte kolom, +4 adalah untuk tipe INT numerik
Untuk menghitung lebih dari satu baris
SELECT SUM[PANJANG[nama] + PANJANG[detail] + 4] DARI contoh WHERE id=1;
Terima kasih untuk balasan Anda
Apakah itu +4 berlaku untuk semua kasus. Dan
saya perlu mendapatkan ukuran baris yang tepat
jadi kalian perlu membimbing saya apakah saya perlu memasukkan biaya tambahan atau tidak…
Dan saya bisa melihat ukuran seluruh tabel di phpmyadmin
Seperti ini
Penggunaan ruang
Ketik Penggunaan
Data 2.412B
Indeks 2.048 B
Total 4.460 B
tapi saya butuh ukuran untuk baris?
Terima kasih sebelumnya…
Untuk mendapatkan ukuran baris yang dipilih, gunakan CHAR_LENGTH[]. Mari kita buat tabel − terlebih dahulu
mysql> create table DemoTable1612 -> [ -> FirstName varchar[20], -> LastName varchar[20] -> ]; Query OK, 0 rows affected [0.87 sec]
Masukkan beberapa record ke dalam tabel menggunakan perintah insert −
mysql> insert into DemoTable1612 values['David','Brown']; Query OK, 1 row affected [0.75 sec] mysql> insert into DemoTable1612 values['John','Smith']; Query OK, 1 row affected [0.21 sec] mysql> insert into DemoTable1612 values['Bob','Taylor']; Query OK, 1 row affected [0.13 sec]_
Tampilkan semua catatan dari tabel menggunakan pernyataan pilih −
mysql> select * from DemoTable1612;
Ini akan menghasilkan output berikut -
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | David | Brown | | John | Smith | | Bob | Taylor | +-----------+----------+ 3 rows in set [0.00 sec]
Berikut adalah kueri untuk mendapatkan ukuran baris yang dipilih di MySQL −
mysql> select sum[char_length[FirstName]] from DemoTable1612 where LastName IN['Brown','Smith','Taylor'];_
Ini akan menghasilkan output berikut -
+-----------------------------+ | sum[char_length[FirstName]] | +-----------------------------+ | 12 | +-----------------------------+ 1 row in set [0.00 sec]
Seperti kebanyakan database relasional, MySQL menyediakan metadata yang berguna tentang database itu sendiri. Sementara sebagian besar database lain menyebut informasi ini sebagai catalog
, dokumentasi resmi MySQL merujuk pada metadata INFORMATION_SCHEMA
sebagai tables
Terlepas dari namanya, yang penting adalah informasi yang diberikan oleh tabel INFORMATION_SCHEMA
ini. Semuanya dari views
dan
+----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
0 hingga +----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
1 dan tables
dapat ditemukan di INFORMATION_SCHEMA
. Untuk tujuan kami, kami sangat tertarik dengan metadata tables
, yang dapat kami kueri untuk benar-benar mengekstrak ukuran berbagai tabel dalam sistemMencantumkan Ukuran Tabel Dari Satu Basis Data
Seperti yang dapat dilihat di dokumentasi resmi, tabel
+----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
_5 berisi sekitar 20 kolom, tetapi untuk tujuan menentukan jumlah ruang disk yang digunakan oleh tabel, kami akan fokus pada dua kolom secara khusus. +----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
6 dan +----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
7
6 adalah panjang [atau ukuran] dari semua data dalam tabel [dalam+----------------------------------+-----------+ | Table | Size [MB] | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ...
9]+----------------------------------+-----------+ | Table | Size [MB] | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ...
7 adalah panjang [atau ukuran] file indeks untuk tabel [juga di+----------------------------------+-----------+ | Table | Size [MB] | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ...
9]+----------------------------------+-----------+ | Table | Size [MB] | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ...
Berbekal informasi ini, kita dapat menjalankan kueri yang akan mencantumkan semua tabel dalam database tertentu bersama dengan ruang disk [ukuran] masing-masing. Kita bahkan bisa menjadi sedikit lebih menarik dan mengonversi nilai ukuran normal dari
+----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
9 menjadi sesuatu yang lebih berguna dan dapat dipahami oleh kebanyakan orang seperti SELECT
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "bookstore"
AND
TABLE_NAME = "book"
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
3SELECT
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "bookstore"
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
Dalam contoh ini menggunakan database
SELECT
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "bookstore"
AND
TABLE_NAME = "book"
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
_4, kami menggabungkan +----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
6 dan +----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
7 sebagai +----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
9, lalu membaginya dengan SELECT
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "bookstore"
AND
TABLE_NAME = "book"
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
8 dua kali untuk mengubahnya menjadi SELECT
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "bookstore"
AND
TABLE_NAME = "book"
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
9 lalu SELECT
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "bookstore"
AND
TABLE_NAME = "book"
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
3. Set hasil kami akan terlihat seperti ini+----------------------------------+-----------+
| Table | Size [MB] |
+----------------------------------+-----------+
| book | 267 |
| author | 39 |
| post | 27 |
| cache | 24 |
...
_Jika Anda tidak peduli dengan semua tabel dalam database dan hanya menginginkan ukuran tabel tertentu, Anda cukup menambahkan
+-------+-----------+
| Table | Size [MB] |
+-------+-----------+
| book | 267 |
+-------+-----------+
1 row in set [0.00 sec]
1 ke klausa +-------+-----------+
| Table | Size [MB] |
+-------+-----------+
| book | 267 |
+-------+-----------+
1 row in set [0.00 sec]
2. Di sini kami hanya ingin informasi tentang tabel ________26______3SELECT
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "bookstore"
AND
TABLE_NAME = "book"
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
Hasilnya, seperti yang diharapkan, sekarang
+-------+-----------+
| Table | Size [MB] |
+-------+-----------+
| book | 267 |
+-------+-----------+
1 row in set [0.00 sec]
Daftar Semua Ukuran Tabel Dari SEMUA Database
Jika Anda mengalami masalah di mana ukuran database Anda bertambah tetapi Anda tidak tahu tabel mana yang menjadi penyebabnya, mungkin berguna untuk menanyakan ukuran semua tabel dalam semua database di seluruh sistem. Ini dapat dicapai dengan mudah dengan kueri berikut
SELECT
TABLE_SCHEMA AS `Database`,
TABLE_NAME AS `Table`,
ROUND[[DATA_LENGTH + INDEX_LENGTH] / 1024 / 1024] AS `Size [MB]`
FROM
information_schema.TABLES
ORDER BY
[DATA_LENGTH + INDEX_LENGTH]
DESC;
Ini akan mengembalikan tidak hanya ukuran tabel, tetapi juga nama tabel dan database induk yang terkait dengannya