mysql 内存溢出_mysql - MySQL在非常大的表上计算性能 - 堆栈内存溢出
我在Innodb中有一個表格,其中有超過1億行。
我必須知道外鍵= 1時是否有超過5000行。我不需要確切的數字。
我做了一些測試:
=> 16 seconds => 16秒中
=> 16 seconds => 16秒中
=> 0.6 seconds => 0.6秒
我的網絡和治療時間會更長一些,但可能會超過15.4秒!
你有更好的主意嗎?
謝謝
編輯:[添加了OP的相關評論]
我嘗試從WHERE fk = 1表中選擇SELECT SQL_NO_CACHE COUNT(fk),但是花了25秒
使用Mysql Tuner為Innodb調整了Mysql。
CREATE TABLE table ( pk bigint(20) NOT NULL AUTO_INCREMENT,
fk tinyint(3) unsigned DEFAULT '0',
PRIMARY KEY (pk), KEY idx_fk (fk) USING BTREE )
ENGINE=InnoDB AUTO_INCREMENT=100380914 DEFAULT CHARSET=latin1
DB資料:
'have_innodb', 'YES' 'ignore_builtin_innodb', 'OFF' 'innodb_adaptive_hash_index', 'ON'
'innodb_additional_mem_pool_size', '20971520' 'innodb_autoextend_increment', '8'
'innodb_autoinc_lock_mode', '1' 'innodb_buffer_pool_size', '25769803776'
'innodb_checksums', 'ON' 'innodb_commit_concurrency', '0',
'innodb_concurrency_tickets', '500' 'innodb_data_file_path',
'ibdata1:10M:autoextend' 'innodb_data_home_dir', '', 'innodb_doublewrite', 'ON'
'innodb_fast_shutdown', '1' 'innodb_file_io_threads', '4'
'innodb_file_per_table', 'OFF', 'innodb_flush_log_at_trx_commit', '1'
'innodb_flush_method', '' 'innodb_force_recovery', '0' 'innodb_lock_wait_timeout', '50'
'innodb_locks_unsafe_for_binlog', 'OFF' 'innodb_log_buffer_size', '8388608'
'innodb_log_file_size', '26214400' 'innodb_log_files_in_group', '2'
'innodb_log_group_home_dir', './' 'innodb_max_dirty_pages_pct', '90'
'innodb_max_purge_lag', '0' 'innodb_mirrored_log_groups', '1' 'innodb_open_files',
'300' 'innodb_rollback_on_timeout', 'OFF' 'innodb_stats_on_metadata', 'ON'
'innodb_support_xa', 'ON' 'innodb_sync_spin_loops', '20' 'innodb_table_locks', 'ON'
'innodb_thread_concurrency', '8' 'innodb_thread_sleep_delay', '10000'
'innodb_use_legacy_cardinality_algorithm', 'ON'
更新'15:到目前為止,我一直使用相同的方法,每天有6億行和64萬新行。 它仍然可以正常工作。
總結
以上是生活随笔為你收集整理的mysql 内存溢出_mysql - MySQL在非常大的表上计算性能 - 堆栈内存溢出的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 掌上英雄联盟如何设置战绩不可见
- 下一篇: 股票一字板成交量怎么看?
