2013-07-23 3 views
3

Windows 7에서 MySQL 5.6 (64 비트)을 실행 중입니다. 최근에 MySQL 5.0을 32 비트 Windows 7에서 업그레이드 한 DB를 테스트하고 있습니다. my.ini도 복사했습니다. 몇 가지 변경 사항이 있음)매우 느린 (1 초) 연결

연결을 설정하는 데 매우 오랜 시간이 걸리는 것으로 나타났습니다 (약 1 초). 10 초 걸렸 10 배를 완료하는 데 그때 배치 파일이 실행

select 1 as n; 

:

mysql -h localhost -u root -D myschema 0< myscript.sql 

가 (예, 암호가 없다 예를 들어, 나는 매우 간단한 SQL 스크립트를 생성 여기, 이것은 127.0.0.1만을 듣는 테스트 DB입니다.

누구나 이것이 왜 그렇게 느린 지 알 수 있습니까? (아래 my.ini 참조)

[client] 
port=3306 
[mysql] 
default-character-set=latin1 
[mysqld] 
port=3306 
bind-address=127.0.0.1 
basedir="C:/Program Files/MySQL/mysql-5.6.10-winx64/" 
datadir=C:/DATA 
character-set-server=latin1 
default-storage-engine=myisam 
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 
max_connections=100 
query_cache_size=0 
table_open_cache=256 
tmp_table_size=18M 
thread_cache_size=8 
myisam_max_sort_file_size=100G 
myisam_sort_buffer_size=35M 
key_buffer_size=25M 
read_buffer_size=64K 
read_rnd_buffer_size=256K 
sort_buffer_size=256K 
innodb_additional_mem_pool_size=2M 
innodb_flush_log_at_trx_commit=1 
innodb_log_buffer_size=1M 
innodb_buffer_pool_size=47M 
innodb_log_file_size=24M 
innodb_thread_concurrency=8 
log-bin=c:/data/mysql/binarylog 
max_binlog_size=1024M 
enable-named-pipe 
slow_query_log= 
expire_logs_days=90 

답변

3

Doh! 이게 사기꾼 같아. 참조 :

Why is connecting to MySQL server so slow?

https://serverfault.com/questions/408550/connecting-to-mysql-from-php-is-extremely-slow

내가있어 IPv6은 64 비트 컴퓨터가 아닌 32 비트 시스템에서 사용 가능. 이런 일이 왜 있는지 아직

mysql -h 127.0.0.1 -u root -D myschema 0< myscript.sql 

아니지만, 적어도 해결 방법이있다 : 나는 다음과 같은 대체 문자열로 연결하면 일이 훨씬 빠르다! 아아 가난한 사람 localhost 나는 그를 잘 알고 있었다.

편집 :

bind-address=::1 

주 : ::ffff:127.0.0.1 또는 localhost에 바인딩하는 데 도움이하는 것 같지 않았어요의 my.ini에 다음과 같이 변경 스크립트와 연결 문자열에서 localhost의 사용할 수 있습니다. 나는 3 개의 연결 문자열 모두가 작동 할 수 있도록 IPv6과 IPv4 주소를 MySQL 서버에 바인딩하는 것에 대해 읽었습니다 (예 : -h ::1, -h 127.0.0.1, -h localhost). 그러나 한 번에 하나 또는 두 개의 클라이언트 문자열 만 사용할 수있었습니다.

EDIT2 : 다음과 같은 방법으로 바인딩 :

bind-address=* 

는 완전히이 문제를 해결하고 IPv4 및 IPv6 모두 클라이언트에 연결할 수 있습니다. 유일한 단점은 이제 원격 연결이 허용된다는 것입니다. 나는 localhost 제한과 함께 TCP를 사용하는 방법을 발견하지 못했고 127.0.0.1::1 모두에 바인드했다.

+0

처음에는 로컬 네트워크의 다른 컴퓨터에있는 MySQL 서버에 연결하는 경우에 해당하지 않는다고 생각했습니다. 그것이하는 것을 발견했다! 간단히 말해 localhost/127.0.0.1이 아닌 일반적인 경우를 설명하기 위해 답변을 수정하는 것이 좋습니다. 즉, 이름과 IPv4 주소로 참조되는 모든 서버 노드. – Zenilogix

+0

@rObjects 나는 위대한 정보에 동의하지만 확실하게 여기에서 그것을 짤 수있다. 아마도 스택 오버플로 위키 항목이 더 좋을 것입니다.이 위키 항목은 여기에서 링크 할 수 있습니다. –