频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

MySQL数据库优化(八)

来源:IT专家网 作者:叶金荣 出处:巧巧读书 2008-06-16 进入讨论组

  mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
  mysql> INSERT INTO real_table SELECT * FROM insert_table;
  mysql> TRUNCATE TABLE insert_table;
  mysql> UNLOCK TABLES;

  InnoDB 使用行级锁,BDB 使用页级锁。对于 InnoDB 和 BDB 存储引擎来说,是可能产生死锁的。这是因为 InnoDB 会自动捕获行锁,BDB 会在执行 SQL 语句时捕获页锁的,而不是在事务的开始就这么做。

  行级锁的优点有:

  •   在很多线程请求不同记录时减少冲突锁。
  •   事务回滚时减少改变数据。
  •   使长时间对单独的一行记录加锁成为可能。

  行级锁的缺点有:

  •   比页级锁和表级锁消耗更多的内存。
  •   当在大量表中使用时,比页级锁和表级锁更慢,因为他需要请求更多的所资源。
  •   当需要频繁对大部分数据做 GROUP BY 操作或者需要频繁扫描整个表时,就明显的比其它锁更糟糕。
  •   使用更高层的锁的话,就能更方便的支持各种不同的类型应用程序,因为这种锁的开销比行级锁小多了。

  表级锁在下列几种情况下比页级锁和行级锁更优越:

  •   很多操作都是读表。
  •   在严格条件的索引上读取和更新,当更新或者删除可以用单独的索引来读取得到时:


  UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
  DELETE FROM tbl_name WHERE unique_key_col=key_value;

  SELECT 和 INSERT 语句并发的执行,但是只有很少的 UPDATE 和 DELETE 语句。

  •   很多的扫描表和对全表的 GROUP BY 操作,但是没有任何写表。
更多文章 更多内容请看系统优化大全MySQL数据备份MySQL专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章