首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> 性能调优 >> 正文

MySQL数据库优化(八)

 


  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 操作,但是没有任何写表。

      上一页  [1] [2] [3] [4] 下一页

      【责编:michael】

    中国IT教育

    相关产品和培训
    文章评论
     友情推荐链接
     认证培训
     专题推荐

     ·关于Java框架技术专题
     ·XML全攻略技术专题
     ·JAVA开源技术介绍专题
     ·Java嵌入式开发之J2ME技术专题
     ·超前体验 Oracle 11g的5个新特性…
     ·揭密使用VB.NET的五个实用技巧
     ·Oracle和SQL Server常用函数对比专题…
     ·展现C#世界 C#程序设计专题…
     ·Java入门 Tomcat的配置技巧精华专题…
     ·Oracle RMAN物理备份技术详解…
     今日更新
     社区讨论
     博客论点
     频道精选
     Oracle频道相关导航