2011-07-03 5 views
0

방금 ​​새로운 머신 (16GB RAM, 4 배속 SAS 15k rpm 300GB RAID10)이 있으므로 매우 빠른 시스템입니다.InnoDB mysql 데이터베이스 가져 오기 속도 향상

저는 몇 백만 개의 항목이있는 데이터베이스 몇 개를 가져 왔지만 생각보다 오래 걸립니다. 초당 약 1000 개의 인서트가 보입니다. 훨씬 더 많은 작업을 수행 할 수 있어야합니다. 또한 프로세스 실행 시간이 길어질수록 느려집니다.

이것은 내 구성이며 속도를 높이는 데 도움이되는 팁이지만 데이터의 안정성에는 영향을주지 않습니다.

[mysqld] 
skip-name-resolve 
datadir=/var/lib/mysql 
#socket=/tmp/mysql.sock 
log-error=/var/log/mysqld.log 
port=48221 
user=mysql 
old_passwords=0 
max_connections = 1500 
table_cache = 1024 
max_allowed_packet = 16M 
sort_buffer_size = 2M 
thread_cache = 8 
thread_concurrency = 32 
query_cache_size = 0M 
query_cache_type = 0 
default-storage-engine = innodb 
transaction_isolation = REPEATABLE-READ 
tmp_table_size = 256M 
long_query_time = 3 
log_slow_queries = 1 
innodb_additional_mem_pool_size=48M 
innodb_flush_log_at_trx_commit=2 
innodb_log_buffer_size=32M 
innodb_buffer_pool_size=2G 
innodb_autoinc_lock_mode=2 
innodb_io_capacity=500 
innodb_read_io_threads=16 
innodb_write_io_threads=8 
innodb_buffer_pool_size = 5000M 
innodb_lock_wait_timeout = 300 
innodb_max_dirty_pages_pct = 90 
innodb_thread_concurrency =32 

[mysqldump] 
quick 
single-transaction 

[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 

답변

2

가져 오기 기간 동안 색인을 삭제하고 완료되면 색인을 삭제할 수 있습니다. 또한 단일 트랜잭션에서 자동 커밋과 모든 삽입 사이의 달콤한 지점을 검색하여 삽입을 청크로 시도해야합니다.

+0

팁 주셔서 감사합니다. 하지만 구성 설정 현명한, 어떤 제안? –

+0

그건 내 차 한잔 아니에요, 다른 사람이 피치해야합니다. – Szocske