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

MySQL数据库优化(八)

来源:IT专家网 作者:叶金荣 出处:巧巧读书 2008-06-16 进入讨论组
上一页 1 2 3 4 

  下列所述可以减少表锁带来的资源争夺:

  让 SELECT 速度尽量快,这可能需要创建一些摘要表。

  启动 mysqld 时使用参数 --low-priority-updates。这就会让更新操作的优先级低于 SELECT。这种情况下,在上面的假设中,第二个 SELECT 就会在 INSERT 之前执行了,而且也无需等待第一个SELECT 了。

  可以执行 SET LOW_PRIORITY_UPDATES=1 命令,指定所有的更新操作都放到一个指定的链接中去完成。

  用 LOW_PRIORITY 属性来降低 INSERT,UPDATE,DELETE 的优先级。

  用 HIGH_PRIORITY 来提高 SELECT 语句的优先级。

  从MySQL 3.23.7 开始,可以在启动 mysqld 时指定系统变量 max_write_lock_count 为一个比较低的值,它能强制临时地提高表的插入数达到一个特定值后的所有 SELECT 操作的优先级。它允许在 WRITE 锁达到一定数量后有 READ 锁。

  当 INSERT 和 SELECT 一起使用出现问题时,可以转而采用 MyISAM 表,它支持并发的SELECT 和 INSERT 操作。

  当在同一个表上同时有插入和删除操作时,INSERT DELAYED 可能会很有用。

  当 SELECT 和 DELETE 一起使用出现问题时,DELETE 的 LIMIT 参数可能会很有用。

  执行 SELECT 时使用 SQL_BUFFER_RESULT 有助于减短锁表的持续时间.

  可以修改源代码 `mysys/thr_lock.c',只用一个所队列。这种情况下,写锁和读锁的优先级就一样了,这对一些应用可能有帮助。

  以下是MySQL锁的一些建议:

  只要对同一个表没有大量的更新和查询操作混在一起,目前的用户并不是问题。

  执行 LOCK TABLES 来提高速度(很多更新操作放在一个锁之中比没有锁的很多更新快多了)。将数据拆分开到多个表中可能也有帮助。

  当MySQL碰到由于锁表引起的速度问题时,将表类型转换成 InnoDB 或 BDB 可能有助于提高性能。

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