我正在使用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. 在MariaDB中优化1次SQL更新声明
- 2. Oracle更新声明
- 3. SQL更新声明
- 4. Postgresql更新声明
- 5. MySQL声明的性能和优化
- 6. 请帮我优化这个Linq声明
- 7. 优化红宝石检测声明
- 8. 优化函数声明位置
- 9. MySql更新优化?
- 10. 优化QListView更新
- 11. Oracle - 优化更新
- 12. LINQ声明优化 - 寻求更好设计的建议
- 13. 更新甲骨文声明
- 14. 加入更新声明
- 15. 限额更新声明
- 16. Android - SQLite更新声明
- 17. ASP.NET更新GridView的声明
- 18. SQL Server更新声明
- 19. SQL大写更新声明
- 20. 更新ClaimPrincipal中的声明
- 21. Java中的更新声明
- 22. 内联SQL更新声明
- 23. fetch_assoc()中的更新声明
- 24. 需要更新Oracle声明
- 25. 优化更新查询
- 26. 优化PostgreSQL的更新
- 27. Java MySQL更新优化
- 28. 优化更新语句
- 29. 优化MySQL Subselect更新
- 30. 简化声明
没有看到你的表结构nd更新查询是非常困难的。请提供更多信息。 – 2012-03-04 07:07:14