テーブルには、トランザクションに多くの時間を要する約100万行(物理ディスクのサイズはテキストカラムがあるため、8 GB近く)です。特に、「選択」については、例えば、条件なしでカウントクエリに約12分かかります。つまり、select count(*) from TestPerformance
です。MySQLで巨大なテーブルを照会する
名: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
とインデックスは、私が1ギガバイトにkey_buffer
サイズを調整されてきたが、何もパフォーマンスに変化していない
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
ある
表のスキーマです。
どのようにデータを削除せずにこのテーブルのトランザクションを高速化できますか?
私はDBエキスパートではありません。テーブルのパフォーマンスを改善するための提案をお寄せください。
問題を引き起こすクエリは表示されませんでした。 –
mysqldumpを使用して、多くの時間を要するクエリを見つけます。 – vikky
'SELECT count(id)from TestPerformance'は時間がかかりますか?必要なフィールドだけを選択してください。 –