表的数据量过大修改或删除太慢怎么解决?

hanfengmvp 2007-07-04 09:41:05
有一个表因为有一个字段为blob类型,而这个表所占的硬盘空间现在达到了20多G,这个表现在控制台select、update或者delete一条数据都会慢的令人无法忍受(这种情况下本人在后台还未成功删除过一条数据),这个表的主键时increment类型的。请问如何解决这种情况下的速度的问题呢?谢谢了
...全文
2019 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanfengmvp 2007-07-06
  • 打赏
  • 举报
回复
我的表就是InnoDB类型的,多打了一个字母。这个表的update和delete所用的查询条件都是用的主键,但是有一点很奇怪,好像在应用程序里显示一条记录好像速度还可以接受,不知为什么update和delete在后台就是这么慢
hanfengmvp 2007-07-06
  • 打赏
  • 举报
回复
如果在where查询了一个不是索引的字段,这个字段不是主键,那么这个字段该建立什么索引?
whalefish2001 2007-07-06
  • 打赏
  • 举报
回复
BDB类型的表,当进行,更新,删除操作时,要进行表级的锁,所以操作起来会比较慢。
建议楼主改为InnoDB类型的表。
两种表类型,都可以支持事务的。

同意用 OPTIMIZE TABLE进行优化,
但是这种优化过程会花费很长时间,楼主要事先准备好。
乌镇程序员 2007-07-06
  • 打赏
  • 举报
回复
SELECT、UPDATE、DELETE的时候WHERE条件只用到主键吗?
乌镇程序员 2007-07-05
  • 打赏
  • 举报
回复
另外,创建合理的索引。
hanfengmvp 2007-07-05
  • 打赏
  • 举报
回复
我的表类型是InnoBDB的,另外建立了主键不就等于有了索引了吗?那么还需要什么东西呢
懒得去死 2007-07-05
  • 打赏
  • 举报
回复
看一下MYSQL的优化吧 。
http://blog.chinaunix.net/u/29134/showart_264480.html
乌镇程序员 2007-07-04
  • 打赏
  • 举报
回复
表类型是什么?如果是MyISAM,并且该表的定义里只有一个VARCHAR、xxxTEXT或者xxxBLOB字段的话,MySQL会自动选择表类型为MyISAM Dynamic。对这种表的频繁修改会产生大量的碎片,用OPTIMIZE TABLE进行碎片整理试试。

(参考自《MySQL5权威指南》)

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧