You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-01 06:46:55 +03:00
MCOL-406 Improved Information Schema
* Add INFORMATION_SCHEMA.COLUMNSTORE_FILES which contains information about files * Remove file information from COLUMNSTORE_EXTENTS (due to above) * Hide columns with Object ID < 3000 (internal columns) * Fix bad calculation in data_size columns * Fix minor memory leak * Add compressedSize() function to IDBFileSystem to get the used file size for a compressed file * Add columnstore_info schema with utility stored procedures to access the information_schema tables
This commit is contained in:
50
dbcon/mysql/columnstore_info.sql
Normal file
50
dbcon/mysql/columnstore_info.sql
Normal file
@ -0,0 +1,50 @@
|
||||
CREATE DATABASE columnstore_info;
|
||||
USE columnstore_info;
|
||||
|
||||
DELIMITER //
|
||||
CREATE FUNCTION `format_filesize`(filesize FLOAT) RETURNS varchar(20) CHARSET utf8 DETERMINISTIC
|
||||
BEGIN
|
||||
|
||||
DECLARE n INT DEFAULT 1;
|
||||
|
||||
LOOP
|
||||
IF filesize < 1024 THEN
|
||||
RETURN concat(round(filesize, 2), ' ', elt(n, 'Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'BB'));
|
||||
END IF;
|
||||
SET filesize = filesize / 1024;
|
||||
SET n = n + 1;
|
||||
END LOOP;
|
||||
|
||||
END //
|
||||
|
||||
|
||||
CREATE PROCEDURE total_usage ()
|
||||
BEGIN
|
||||
SELECT
|
||||
(SELECT format_filesize(sum(data_size)) TOTAL_DATA_SIZE FROM INFORMATION_SCHEMA.COLUMNSTORE_EXTENTS) TOTAL_DATA_SIZE,
|
||||
(SELECT format_filesize(sum(file_size)) TOTAL_DISK_USAGE FROM INFORMATION_SCHEMA.COLUMNSTORE_FILES) TOTAL_DISK_USAGE;
|
||||
END //
|
||||
|
||||
CREATE PROCEDURE table_usage (IN t_name char(64))
|
||||
BEGIN
|
||||
IF t_name IS NOT NULL THEN
|
||||
SELECT TABLE_NAME, format_filesize(sum(cf.file_size)) DATA_DISK_USAGE, format_filesize(sum(IFNULL(ccf.file_size, 0))) DICT_DISK_USAGE, format_filesize(sum(cf.file_size) + sum(IFNULL(ccf.file_size, 0))) TOTAL_USAGE FROM INFORMATION_SCHEMA.COLUMNSTORE_COLUMNS cc
|
||||
JOIN INFORMATION_SCHEMA.COLUMNSTORE_FILES cf ON cc.object_id = cf.object_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.COLUMNSTORE_FILES ccf ON cc.dictionary_object_id = ccf.object_id
|
||||
WHERE table_name = t_name GROUP BY table_name;
|
||||
ELSE
|
||||
SELECT TABLE_NAME, format_filesize(sum(cf.file_size)) DATA_DISK_USAGE, format_filesize(sum(IFNULL(ccf.file_size, 0))) DICT_DISK_USAGE, format_filesize(sum(cf.file_size) + sum(IFNULL(ccf.file_size, 0))) TOTAL_USAGE FROM INFORMATION_SCHEMA.COLUMNSTORE_COLUMNS cc
|
||||
JOIN INFORMATION_SCHEMA.COLUMNSTORE_FILES cf ON cc.object_id = cf.object_id
|
||||
LEFT JOIN INFORMATION_SCHEMA.COLUMNSTORE_FILES ccf ON cc.dictionary_object_id = ccf.object_id
|
||||
GROUP BY table_name;
|
||||
END IF;
|
||||
END //
|
||||
|
||||
CREATE PROCEDURE compression_ratio()
|
||||
BEGIN
|
||||
SELECT CONCAT(((1 - (sum(data_size) / sum(compressed_data_size))) * 100), '%') COMPRESSION_RATIO FROM INFORMATION_SCHEMA.COLUMNSTORE_EXTENTS ce
|
||||
JOIN INFORMATION_SCHEMA.COLUMNSTORE_FILES cf ON ce.object_id = cf.object_id
|
||||
WHERE compressed_data_size IS NOT NULL;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
Reference in New Issue
Block a user