我们通过 performance_schema 观察了 memory 引擎的内存分配,由此推算了内部临时表的内存占用情况。
MySQL 在其他元数据中,诸如 information_schema.INNODB_TEMP_TABLE_INFO 中,并不展示内部临时表的信息,如图:
另外值得注意的是:memory 引擎会多划分出不少空间,比如本例中我们的数据是 300025 行 * 4 字节 =~ 1.2M,而引擎分出了 4M 多的内存来进行存储。
因此如果进行估算时,需要将数据量乘以一个较大的系数,才能准确估算。
1.近n个月
不废话 直接上sql
SELECT
DATE_FORMAT( @cdate := DATE_ADD( @cdate, INTERVAL - 1 MONTH ), '%Y-%m' ) AS cmonth
FROM
( SELECT @cdate := DATE_ADD( '2020-7-1', INTERVAL + 1 MONTH ) FROM information_schema.CHARACTER_SETS ) t0
LIMIT 100
注意 information_schema.CHARACTER_SETS这个表是mysql系统表,可以取到的最大月数和这个表的数量有关,如果又更多的时间要选,可以查询其他表,数据量不要太大,太大会影响查询效率
2 同理 上近n天
SELECT
@cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY )AS DAYS
FROM
( SELECT @cdate := DATE_ADD( '2020-7-1', INTERVAL + 1 DAY ) FROM information_schema.CHARACTER_SETS ) t0
LIMIT 100
order by 排序后面是可以添加多个排序方式的,优先级是从左到右,例如
--先对c.county降序排列,然后再a.corp进行升序排列,最后再对a.time 降序排列select * from table1 a INNER JOIN table2 b ON a.corp = b.corp and a.code = b.code INNER JOIN table3 c ON a.corp = c.corp where 1=1
order by c.county desc,a.corp asc,a.time desc
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)