Mysql:插入性能INNODB vs MYISAM
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql:插入性能INNODB vs MYISAM,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3951字,纯文字阅读大概需要6分钟。
内容图文
![Mysql:插入性能INNODB vs MYISAM](/upload/InfoBanner/zyjiaocheng/897/14d306fb119a4131b153ec7c30fbf705.jpg)
我插入一个简单的小表,有5个属性和1000行.
我观察发动机是INNODB时,每次插入需要0.03 – 0.05秒.
我将引擎更改为MYISAM,然后插入更快.它需要0.001 – 0.003.
问题是什么. innodb_flush_log_trx_commit = 1默认情况下.我就是这样的设置.
这是我的innodb设置.
innodb_log_buffer_size : 1MB
innodb_log_file_size : 5MB
innodb_buffer_pool_size: 8MB
innodb_flush_log_trx_commit = 1
mysql> desc table ;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(10) | YES | | NULL | |
| count | int(10) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
变量
mysql> show variables like 'innodb%' ;
+-----------------------------------------+------------------------+
| Variable_name | Value |
+-----------------------------------------+------------------------+
| innodb_adaptive_hash_index | ON |
| innodb_additional_mem_pool_size | 1048576 |
| innodb_autoextend_increment | 8 |
| innodb_autoinc_lock_mode | 1 |
| innodb_buffer_pool_size | 8388608 |
| 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 | 2097152 |
| innodb_log_file_size | 5242880 |
| 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_method | nulls_equal |
| 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 |
—————————————– ——— —————
36行(0.00秒)
我无法弄清楚这有什么问题.
提前致谢.
问候,
UDAY
解决方法:
原因很简单.当您向MyISAM中插入一行时,它只是将其放入服务器的内存中,并希望服务器在将来的某个时刻将其刷新到磁盘.祝服务器崩溃,祝你好运.
当你在InnoDB中插入一行时,它会将事务永久地同步到磁盘,这需要它等待磁盘旋转.在您的系统上进行数学运算,看看需要多长时间.
您可以通过放宽innodb_flush_log_at_trx_commit或在事务中批处理行而不是每行执行一个事务来改进这一点.
我强烈推荐阅读高性能MySQL第3版(我是作者).
内容总结
以上是互联网集市为您收集整理的Mysql:插入性能INNODB vs MYISAM全部内容,希望文章能够帮你解决Mysql:插入性能INNODB vs MYISAM所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。