Home > Database > Mysql Tutorial > body text

Monty说MySQL的优化(七)_MySQL

WBOY
Release: 2016-06-01 14:01:03
Original
1001 people have browsed it

三十一、事务的例子

  MyIASM表如何进行事务处理:

  mysql> LOCK TABLES trans READ, customer WRITE;

  mysql> select sum(value) from trans where customer_id=some_id;

  mysql> update customer set total_value=sum_from_previous_statement

  where customer_id=some_id;

  mysql> UNLOCK TABLES;

  BDB表如何进行事务:

  mysql> BEGIN WORK;

  mysql> select sum(value) from trans where customer_id=some_id;

  mysql> update customer set total_value=sum_from_previous_statement

  where customer_id=some_id;

  mysql> COMMIT;

  注意你可以通过下列语句回避事务:

  UPDATE customer SET value=value+new_value WHERE customer_id=some_id;

  三十二、使用REPLACE的例子

  REPLACE的功能极像INSERT,除了如果一条老记录在一个唯一索引上具有与新纪录相同的值,那么老记录在新纪录插入前则被删除。不使用 SELECT 1 FROM t1 WHERE key=#

  IF found-row

  LOCK TABLES t1

  DELETE FROM t1 WHERE key1=#

  INSERT INTO t1 VALUES (...)

  UNLOCK TABLES t1;

  ENDIF

  而用

  REPLACE INTO t1 VALUES (...)

  三十三、一般技巧

  使用短主键。联结表时使用数字而非字符串。

  当使用多部分键码时,第一部分应该时最常用的部分。

  有疑问时,首先使用更多重复的列以获得更好地键码压缩。

  如果在同一台机器上运行MySQL客户和服务器,那么在连接MySQL时则使用套接字而不是TCP/IP(这可以提高性能7.5%)。可在连接MySQL服务器时不指定主机名或主机名为localhost来做到。

  如果可能,使用--skip-locking(在某些OS上为默认),这将关闭外部锁定并将提高性能。

  使用应用层哈希值而非长键码:

  SELECT * FROM table_name WHERE hash=MD5(concat(col1,col2)) AND

  col_1='constant' AND col_2='constant'

  在文件中保存需要以文件形式访问的BLOB,在数据库中只保存文件名。

  删除所有行比删除一大部分行要快。

  如果SQL不够快,研究一下访问数据的较底层接口。

  三十四、使用MySQL 3.23的好处

  MyISAM:可移植的大表格式

  HEAP:内存中的表

  Berkeley DB:支持事务的表。

  众多提高的限制

  动态字符集

  更多的STATUS变量

  CHECK和REPAIR表

  更快的GROUP BY和DISTINCT

  LEFT JOIN ... IF NULL的优化

  CREATE TABLE ... SELECT

  CREATE TEMPORARY table_name (...)

  临时HEAP表到MyISAM表的自动转换

  复制

  mysqlhotcopy脚本

  三十五、正在积极开发的重要功能

  改进事务处理

  失败安全的复制

  正文搜索

  多个表的删除(之后完成多个表的更新)

  更好的键码缓存

  原子RENAME (RENAME TABLE foo as foo_old, foo_new as foo)

  查询高速缓存

  MERGE TABLES

  一个更好的GUI客户程序

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template