我正在使用MyISAM唯一的数据库,并且大表上的更新花费了太多时间。桌子的大小约为30GB(MYD和MYI各15GB)。无论如何,除了看索引,我还可以提高速度吗?优化更新声明
优化更新声明
回答
的MyISAM键缓存调整: http://docs.oracle.com/cd/E19957-01/mysql-refman-5.4/optimization.html#myisam-key-cache
一般性能优化:(有很多) http://docs.oracle.com/cd/E19957-01/mysql-refman-5.5/optimization.html
30 GB是相当大的,你运行一个高端服务器?
Mysql消耗超过100%的CPU,有时CPU显示30-50%的最高输出。这是正常的吗?另一个问题是,如果我在更新记录之前选择,是否会使用缓存? – shantanuo 2012-03-04 07:23:42
取决于它运行的机器。我已经在这个太高的地方运行了小型服务器,并且我一直在共享网络主机上,因为它运行的是24个核心,所以100%cpu时间不算什么。然而,即使对于具有许多内核和大量内存的服务器,30GB也是相当高的(许多高端服务器在2012年只能处理32-64个内存)。如果你有一小部分查询被频繁访问,那么它可能是好的。如果你正在查询一个大集合,并且没有太多的db存储在RAM中,那么你的大瓶颈就是需要将这些文件从光盘分页到RAM中。 – SinisterRainbow 2012-03-17 02:25:00
如果您正在加载大量数据,请查看批量插入命令,或根据具体情况加载数据infile。
如果你正在做大量的插入,可能值得在插入之前测试关键的禁用。它可能有助于加快速度。
使用
insert into myTable values("rec1","hello"),("rec2","world"),("rec3","cheesy huh");
将在1条语句插入3条记录 - 同样,你需要对其进行测试。
我已经完成了这种形式的插入与成千上万的行,它在我的例子中效果很好。
一些笔记可以interessting:
- 更改存储引擎(InnoDB的是高容量表更好)
- Partitionate您的表(或整个DB)划分为多个逻辑片(如数据按年,本月,区域等),所以表格会更多,但较小的
- 确保MySQL的加入缓冲区的大小和类似的指标是足够大的快速交付
- 1. 优化工作MYSQL声明
- 2. SQL优化案例声明
- 3. 在MariaDB中优化1次SQL更新声明
- 4. 更新声明?
- 5. 更新声明
- 6. Oracle更新声明
- 7. SQL更新声明
- 8. Postgresql更新声明
- 9. mysql更新声明
- 10. 优化函数声明位置
- 11. MySQL声明的性能和优化
- 12. 使用类型声明进行优化
- 13. 优化红宝石检测声明
- 14. PHP优化极长开关罩声明
- 15. SBCL优化:函数的类型声明
- 16. 优化声明java地图的方法
- 17. 请帮我优化这个Linq声明
- 18. 优化Mysql加入声明查询
- 19. Oracle - 优化更新
- 20. 优化QListView更新
- 21. Postgres优化更新
- 22. MySql更新优化?
- 23. LINQ声明优化 - 寻求更好设计的建议
- 24. 删除表声明变量更适合优化吗?
- 25. 更新声明不更新字段
- 26. PSQL批量更新声明
- 27. Java更新声明问题
- 28. 限额更新声明
- 29. Oracle SQL更新声明
- 30. 更新与除声明
没有看到你的表结构nd更新查询是非常困难的。请提供更多信息。 – 2012-03-04 07:07:14