在其中一个表中,有大约90万条记录。当我们检查数据大小时,它大约是800 MB。我们可以减少数据大小而不删除数据。
提前致谢。
CREATE TABLE snmptraps(
SiteID int(11) NOT NULL default 1,
SystemID int(11) NOT NULL,
EnterpriseID varchar(255) default NULL,
IPAddress varchar(255) default NULL,
GenericTrap varchar(255) default NULL,
SpecificTrap varchar(255) default NULL,
TimestampGen varchar(255) default NULL,
TimestampRec datetime default NULL,
OID varchar(1024) default NULL,
OIDValue varchar(1024) default NULL,
TimePeriod TIMESTAMP NOT NULL default CURRENT_TIMESTAMP,
PDUType int(11),
Description varchar(255) default NULL,
);
答案 0 :(得分:4)
尝试
optimize table your_table;
答案 1 :(得分:1)
使用PROCEDURE ANALYSE()获取有关数据类型中可能的优化的建议。请注意,这些只是自动建议,您仍应根据自己的应用需求自行判断。
另外:是MyISAM还是InnoDB?桌子的结构是什么?
答案 2 :(得分:0)
如果您的用例允许您可以考虑MySQL归档存储引擎。这肯定会释放很多空间。但这取决于你桌子的使用情况。
删除不必要的索引,重新检查列类型等也可能有所帮助。但这又与您的应用程序的需求有关。
干杯!
答案 3 :(得分:0)
您可以减小索引的大小(esp:char / varchar / text columns)。
此外:如果您使用innodb并使用默认设置,则数据文件(例如ibdata1)只能增长 - 即使您删除表。
可能想查看innodb_file_per_table选项:http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
答案 4 :(得分:0)
以下是我为数据库执行的几个步骤,我获得了更好的性能。
设计表以最小化磁盘空间。这可以通过减少写入磁盘和从磁盘读取的数据量来实现巨大的改进。
表格列 行格式 索引
答案 5 :(得分:0)
您可以最小化输出以便更容易地从主机复制到另一个
host:~ $ mysqldump -uroot -p database snmptraps | gzip > snmptraps.sql.gz