You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-05 16:15:50 +03:00
MCOL-1016 Fix I_S calculations
* COLUMNSTORE_EXTENTS data_size now shows the total size on the highest segment of an extent file. It also shows 0 bytes if HWM is zero so that if there is more than one segment it doesn't show 8192 bytes for the lower segments. * COMPRESSION_RATIO was missing some data and using compressed data size instead of file size (which is probably more realistic).
This commit is contained in:
@@ -82,9 +82,7 @@ DROP PROCEDURE IF EXISTS `compression_ratio` //
|
|||||||
|
|
||||||
CREATE PROCEDURE compression_ratio()
|
CREATE PROCEDURE compression_ratio()
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT CONCAT(((sum(compressed_data_size) / sum(data_size)) * 100), '%') COMPRESSION_RATIO FROM INFORMATION_SCHEMA.COLUMNSTORE_EXTENTS ce
|
SELECT CONCAT((SELECT SUM(file_size) FROM information_schema.columnstore_files WHERE compressed_data_size IS NOT NULL) / (SELECT SUM(data_size) FROM information_schema.columnstore_extents) * 100, '%') COMPRESSION_RATIO;
|
||||||
JOIN INFORMATION_SCHEMA.COLUMNSTORE_FILES cf ON ce.object_id = cf.object_id
|
|
||||||
WHERE compressed_data_size IS NOT NULL;
|
|
||||||
END //
|
END //
|
||||||
|
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
@@ -152,14 +152,18 @@ static int is_columnstore_extents_fill(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
default:
|
default:
|
||||||
table->field[14]->store("Unknown", strlen("Unknown"), cs);
|
table->field[14]->store("Unknown", strlen("Unknown"), cs);
|
||||||
}
|
}
|
||||||
// MCOL-454: special case, sometimes blockOffset can be > 0 and HWM can be 0
|
// MCOL-1016: on multiple segments HWM is set to 0 on the lower
|
||||||
|
// segments, we don't want these to show as 8KB. The down side is
|
||||||
|
// if the column has less than 1 block it will show as 0 bytes.
|
||||||
|
// We have no lookahead without it getting messy so this is the
|
||||||
|
// best compromise.
|
||||||
if (iter->HWM == 0)
|
if (iter->HWM == 0)
|
||||||
{
|
{
|
||||||
table->field[15]->store(8192);
|
table->field[15]->store(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
table->field[15]->store((iter->HWM - iter->blockOffset + 1) * 8192);
|
table->field[15]->store((iter->HWM + 1) * 8192);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (schema_table_store_record(thd, table))
|
if (schema_table_store_record(thd, table))
|
||||||
|
Reference in New Issue
Block a user