单表300万条数据,数据空间为3127.83M,索引空间为1774.58M,总大小为4902.41. 单条数据大小为1.37K.
优化思路:
1、修改innodb_buffer_pool_size,innodb_buffer_pool_instances * 。
计算规则:innodb_buffer_pool_size = innodb_buffer_pool_instances * innodb_buffer_pool_chunk_size小于1G时,无需修改。
建议innodb_buffer_pool_chunk_size小于1G时,无需修改innodb_buffer_pool_instances。
2、索引优化
1、建立合适的索引,删除无效的索引。
2、建立索引的字段长度、数据类型优化,降低索引大小。提高单个page上可以索引的个数。
3、降低数据量
1、拆分数据表,将业务关注低的历史数据迁移到历史表。
2、表中字段长度、类型的优化。
3、删除废弃的字段。
4、建立附加表移动超大长度字段到附加表中。
4、优化sql语句
1、通过explain分析sql语句,是否使用索引,扫描数据量大小优化sql。
5、推动业务逻辑优化
1、查询条件增加时间默认条件,降低单次查询数据量。比如时间段。
附加:
表空间查询语句
SELECT
table_schema AS 'Database',
table_name AS 'Table',
round((( data_length ) / 1024 / 1024 ), 2 ) AS 'Size in MB',
round((( index_length ) / 1024 / 1024 ), 2 ) AS 'Size in MB',
round((( data_length + index_length ) / 1024 / 1024 ), 2 ) AS 'Size in MB'
FROM
information_schema.TABLES
ORDER BY
( data_length + index_length ) DESC;