我有两个表(使用MySQL):*TATLY_THEMES(CODE_TAC,CODE_TH)和TARTICS(CODE_TAC,TACLY_DATA)*其中TARTY_THEMES包含1300万行和TARTICS 300万行,但是运行使“code_tac”列成为外键的查询花费的时间太长,我的意思是超过2个小时!
查询SQL:
ALTER TABLE tactic_themes
ADD CONSTRAINT fk_foreign_key_name
FOREIGN KEY (code_tac)
REFERENCES tactics(code_tac);
我的MySQL服务器变量:
Variable_Name|值
Aria_PAGECACH_BUFFER_大小|134217728
Aria_SORT_BUFFER_SIZE|268434432
BULK_INSERT_BUFFER_SIZE|8388608
Innodb_BUFFER_POOL_CHUNK_SIZE|16777216
Innodb_Buffer_POOL_DUMP_AT_SHUTDOWN|ON
Innodb_Buffer_POOL_DUMP_NOW|关闭
Innodb_Buffer_Pool_Dump_pct|25
Innodb_BUFFER_POOL_FILENAME|ib_缓冲区_池
Innodb_BUFFER_POOL_INSTANCE|1
Innodb_BUFFER_POOL_LOAD_ABORT|关闭
Innodb_BUFFER_POOL_LOAD_AT_STARTUP|ON
Innodb_Buffer_POOL_LOAD_NOW|关闭
Innodb_BUFFER_POOL_SIZE|16777216
Innodb_Change_Buffer_max_Size|25
Innodb_Change_Buffering|全部
Innodb_LOG_BUFFER_SIZE|8388608
Innodb_SORT_BUFFER_SIZE|1048576
JOIN_BUFFER_SIZE|262144
JOIN_BUFFER_SPACE_LIMIT|2097152
Key_BUFFER_SIZE|16777216
Mrr_Buffer_SIZE|262144
MYISAM_SORT_BUFFER_SIZE|8388608
NET_BUFFER_LENGTH|8192
PRELOAD_BUFFER_SIZE|10485760
READ_BUFFER_SIZE|262144
READ_RND_BUFFER_SIZE|524288
SORT_BUFFER_SIZE|524288
SQL_BUFFER_RESULT|OFF
有人能帮帮忙吗?
1条答案
按热度按时间vvppvyoh1#
我是说两个多小时!
在不确切了解硬件是什么并花费一些时间分析您的环境的情况下,我们无法评论这是否有任何异常。即使是这样,你的问题也会偏离堆栈溢出的主题--堆栈溢出是关于编写代码,而不是修复硬件/服务。
在处理大型数据集时,有些操作需要花费大量时间。几十年来,人们一直在先发制人,只运行一次速度较慢的东西。不要不断地重新创建数据集--找到一种方法来更新/添加您已有的数据。
还有一种运行速度较慢的东西的方法来减少对服务的影响--有一个很好的打包解决方案in the Percona Toolkit。