Monty说MySQL的优化(六)

2016-02-19 18:01 5 1 收藏

下面是个Monty说MySQL的优化(六)教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - 编程语言 】

  二十六、如何知晓MySQL解决一条查询

  运行项列命令并试图弄明白其输出:

  SHOW VARIABLES;

  SHOW COLUMNS FROM ...G

  EXPLAIN SELECT ...G

  FLUSH STATUS;

  SELECT ...;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  SHOW STATUS;

  二十七、MySQL非常不错

  日志

  在进行很多连接时,连接非常快。

  同时使用SELECT和INSERT的场合。

  在不把更新与耗时太长的选择结合时。

  在大多数选择/更新使用唯一键码时。

  在使用没有长时间冲突锁定的多个表时。

  在用大表时(MySQL使用一个非常紧凑的表格式)。

  二十八、MySQL应避免的事情

  用删掉的行更新或插入表,结合要耗时长的SELECT。

  在能放在WHERE子句中的列上用HAVING。

  不使用键码或键码不够唯一而进行JOIN。

  在不同列类型的列上JOIN。

  在不使用=匹配整个键码时使用HEAP表。

  在MySQL监控程序中忘记在UPDATE或DELETE中使用一条WHERE子句。如果想这样做,使用mysql客户程序的--i-am-a-dummy选项。

  二十九、MySQL各种锁定

  内部表锁定

  LOCK TABLES(所有表类型适用)

  GET LOCK()/RELEASE LOCK()

  页面锁定(对BDB表)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  ALTER TABLE也在BDB表上进行表锁定

  LOCK TABLES允许一个表有多个读者和一个写者。

  一般WHERE锁定具有比READ锁定高的优先级以避免让写入方干等。对于不重要的写入方,可以使用LOW_PRIORITY关键字让锁定处理器优选读取方。

  UPDATE LOW_PRIORITY SET value=10 WHERE id=10;

  三十、给MySQL更多信息以更好地解决问题的技巧 注意你总能去掉(加注释)MySQL功能以使查询可移植:

  SELECT /*! SQL_BUFFER_RESULTS */ ...

  SELECT SQL_BUFFER_RESULTS ...

  将强制MySQL生成一个临时结果集。只要所有临时结果集生成后,所有表上的锁定均被释放。这能在遇到表锁定问题时或要花很长时间将结果传给客户端时有所帮助。

  SELECT SQL_SMALL_RESULT ... GROUP BY ...

  告诉优化器结果集将只包含很少的行。

  SELECT SQL_BIG_RESULT ... GROUP BY ...

  告诉优化器结果集将包含很多行。

  SELECT STRAIGHT_JOIN ...

  强制优化器以出现在FROM子句中的次序联结表。

  SELECT ... FROM table_name [USE INDEX (index_list) | IGNORE INDEX (index_list)] table_name2

  强制MySQL使用/忽略列出的索引。

来源:http://www.tulaoshi.com/n/20160219/1616613.html

延伸阅读
当你执行管理员优化的时候,应该紧记以下规则: · 访问内存中的数据快于访问磁盘上的数据。 · 尽量把数据保存在内存中可以减少磁盘操作。 · 保留索引中的信息比保留数据记录的内容更重要。 我们在后面将讨论如何应用这些规则。 增加服务器缓存的大小。服务器拥有很多参数(系统变量),你可以改变这些参数来影...
但请注意,下面的优化并不是完全的。MYSQL实施了许多优化,但我没时间全部测试. MySQL的一些优化列在下面: 删除不必要的括号: ((a AND b) AND c OR (((a AND b) AND (c AND d)))) - (a AND b AND c) OR (a AND b AND c AND d) 常数调入: (ab AND b=c) AND a=5 - b5 AND b=c AND a=5 删除常数条件: (B=5 AND B=5) OR (B=6 AND 5=5) O...
在发布一个选择行的查询时, MySQL进行分析,看是否能够对它进行优化,使它执行更快。本文我们将研究查询优化程序怎样工作。更详细的信息,可参阅MySQL参考指南中的“Getting Maximum Performance from MySQL”,本文描述了MySQL采用的各种优化措施。(http://www.mysql.com/ 处的MySQL联机参考指南在不断地更新。) MySQL查询优化程...
如果使用的是MySQL 5.0.x 可以直接将以下内容保存替换MySQL中的my.ini,记得要修改basedir和datadir两个栏目的路径。 代码如下: [client] port=3306 [mysql] default-character-set=gbk [mysqld] port=3306 basedir="D:/web/mysql/" datadir="D:/web/mysql/Data/" default-character-set=gbk default-storage-engine=MYISAM max_co...
1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是...

经验教程

723

收藏

5
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部