考虑到MySQL中的以下表格列,我想每个月计算一下我的表格大小的增长:
id (BIGINT) - Primary Key
Date (DateTime)
PageViews (INT)
ProductId (INT)
我的商店里有2000件商品。在最糟糕的情况下,每个产品每天至少会被查看一次。每行代表特定产品每天的总页面浏览量。
例如:
id = 6
DateTime = 02/12/2012
PageViews = 0
ProductId = 159
我想计算表格的总大小,或者更好地说,以KB或MB为单位计算每个月的增长量。
我知道有很多事情我应该考虑并附加到计算中,但我不知道它们,也不知道如何计算它们。
我打算将我的MySQL数据库存储在Xeround.com上,限制为50GB,因此我需要确保在使用此模式时我可以放心,在接下来的10年中,我不会遇到任何问题: )
每年将增加100种产品(大致)。
感谢。
答案 0 :(得分:0)
刚刚发现这篇帖子和对不起的家伙,但评论不是很有用,所以决定回答我在我的一台mySQL服务器上分享的内容。
并非每个人都跟踪自己的数据库增长,但这并不难实现。 这个想法是每周从INFORMATION_SCHEMA.TABLES获取表格统计数据的简单方法,或者根据您的需要。
首先,您可以在单独的架构或您喜欢的任何架构下创建表。
while pile != 0:
move = 0
while move < 1 or move > max_stones:
move = int(raw_input("Player 1 How Many Stones"))
pile -= move
if pile == 0:
print "Player 1 wins"
break
else:
print "There are %s stones left." %(pile)
move = 0
while move < 1 or move > max_stones:
move = int(raw_input("Player 2 How Many Stones"))
pile -= move
if pile == 0:
print "Player 2 wins"
break
else:
print "There are %s stones left." %(pile)
print "Game Over"
然后添加插入脚本。您也可以使用cronjob,但我更喜欢使用MySQL EVENT调度程序:
#
# Use stats_db for the default schema for this tool
#
USE stats_db;
#
# CREATE TABLE table_growth_history
#
DROP TABLE IF EXISTS `table_growth_history` ;
CREATE TABLE `table_growth_history`
(
`DATE` date not null
,
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT ''
,
`TABLE_NAME` varchar(64) NOT NULL DEFAULT ''
,
`ENGINE` varchar(64) DEFAULT NULL
,
`TABLE_ROWS` bigint(21) unsigned DEFAULT NULL
,
`DATA_LENGTH` bigint(21) unsigned DEFAULT NULL
,
`INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL
,
`DATA_FREE` bigint(21) unsigned DEFAULT NULL
,
`AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL
,
PRIMARY KEY(DATE,TABLE_SCHEMA,TABLE_NAME)
,
KEY(TABLE_SCHEMA,TABLE_NAME)
)
ENGINE=INNODB DEFAULT CHARSET=utf8;
这将为下一个星期一创建一个事件,然后每个星期一将在表上插入数据。根据您的需求改变一天
现在你想要的是表数据增长的月度报告,你可以使用这个查询来获得一旦你完成1个月的数据捕获就可以运行它:
#
# MySQL EVENT to add table stats for our new history table
#
DELIMITER ;;
CREATE
EVENT IF NOT EXISTS `get_table_growth_history`
ON SCHEDULE EVERY 1 WEEK
STARTS CURRENT_DATE + INTERVAL 7 - WEEKDAY(CURRENT_DATE) DAY
ON COMPLETION PRESERVE ENABLE
DO BEGIN
INSERT INTO
stats_db.table_growth_history
SELECT
DATE(NOW())
,
TABLE_SCHEMA
,
TABLE_NAME
,
ENGINE
,
TABLE_ROWS
,
DATA_LENGTH
,
INDEX_LENGTH
,
DATA_FREE
,
AUTO_INCREMENT
FROM
INFORMATION_SCHEMA.TABLES;
END ;;
DELIMITER ;
您也可以根据需要更改时间范围。
您将拥有服务器中所有数据库的规格和大小。