【发布时间】:2012-01-13 02:11:21
【问题描述】:
我有一个大约有 100 万行的表(物理磁盘上的大小接近 8 GB,因为它有一个文本列),这需要大量时间来处理任何事务。特别是对于“选择”,它需要大量时间,例如没有任何条件的计数查询大约需要 20 分钟,即select count(*) from TestPerformance。
表架构是:
名称:测试性能
Field Type Null Key Default Extra
ID int(11) NO PRI null
TEXT text YES null
CATEGORY varchar(100) YES MUL null
DDOMAIN varchar(100) YES null
NETWORK varchar(100) YES null
NODE varchar(100) YES null
ENTITY varchar(100) YES MUL null
SEVERITY int(11) YES null
TTIME bigint(20) YES null
SOURCE varchar(255) NO MUL null
HELPURL varchar(100) YES null
WEBNMS varchar(100) YES null
GROUPNAME varchar(100) YES null
OWNERNAME varchar(25) NO PRI null
索引是
Table Non_unique Key_name Seq_in_index Column_name
TestPerformance 0 PRIMARY 1 ID
TestPerformance 0 PRIMARY 2 OWNERNAME
TestPerformance 1 TestPerformance0_ndx 1 ID
TestPerformance 1 TestPerformance1_ndx 1 OWNERNAME
TestPerformance 1 TestPerformance_ndx 1 CATEGORY
TestPerformance 1 TestPerformance_ndx 2 SOURCE
TestPerformance 1 TestPerformance_ndx1 1 ENTITY
TestPerformance 1 TestPerformance_ndx2 1 SOURCE
我已将 key_buffer 大小调整为 1 GB,但性能没有任何变化。
如何在不删除任何数据的情况下加快该表的事务处理?
我不是数据库专家。请提供您的建议,以提高表格的性能。
【问题讨论】:
-
您没有向我们展示导致问题的查询。
-
使用mysqldump找出耗时较长的查询。
-
SELECT count(id) FROM TestPerformance需要这么长时间吗?只选择您需要的字段。 -
@Hikaru-Shindo 你的建议没有意义, COUNT(*) 不会做你暗示的事情。我建议看看 [link]dev.mysql.com/doc/refman/5.0/en/…
-
@ramachandran-natesan 告诉我们您的表引擎是什么以及您正在运行什么查询。
标签: mysql performance select query-optimization