|
|
@@ -0,0 +1,40 @@ |
|
|
|
# Copyright (c) 2022, Frappe Technologies and contributors |
|
|
|
# For license information, please see license.txt |
|
|
|
|
|
|
|
import frappe |
|
|
|
|
|
|
|
COLUMNS = [ |
|
|
|
{"label": "Table", "fieldname": "table", "fieldtype": "Data", "width": 200}, |
|
|
|
{"label": "Size (MB)", "fieldname": "size", "fieldtype": "Float"}, |
|
|
|
{"label": "Data (MB)", "fieldname": "data_size", "fieldtype": "Float"}, |
|
|
|
{"label": "Index (MB)", "fieldname": "index_size", "fieldtype": "Float"}, |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
def execute(filters=None): |
|
|
|
frappe.only_for("System Manager") |
|
|
|
|
|
|
|
data = frappe.db.multisql( |
|
|
|
{ |
|
|
|
"mariadb": """ |
|
|
|
SELECT table_name AS `table`, |
|
|
|
round(((data_length + index_length) / 1024 / 1024), 2) `size`, |
|
|
|
round((data_length / 1024 / 1024), 2) as data_size, |
|
|
|
round((index_length / 1024 / 1024), 2) as index_size |
|
|
|
FROM information_schema.TABLES |
|
|
|
ORDER BY (data_length + index_length) DESC; |
|
|
|
""", |
|
|
|
"postgres": """ |
|
|
|
SELECT |
|
|
|
table_name as "table", |
|
|
|
round(pg_total_relation_size(quote_ident(table_name)) / 1024 / 1024, 2) as "size", |
|
|
|
round(pg_relation_size(quote_ident(table_name)) / 1024 / 1024, 2) as "data_size", |
|
|
|
round(pg_indexes_size(quote_ident(table_name)) / 1024 / 1024, 2) as "index_size" |
|
|
|
FROM information_schema.tables |
|
|
|
WHERE table_schema = 'public' |
|
|
|
ORDER BY 2 DESC; |
|
|
|
""", |
|
|
|
}, |
|
|
|
as_dict=1, |
|
|
|
) |
|
|
|
return COLUMNS, data |