WEB开发网
开发学院数据库MySQL 详解MySQL三项实用开发知识 阅读

详解MySQL三项实用开发知识

 2009-04-02 11:18:19 来源:WEB开发网   
核心提示: 3. 查看索引使用情况使用以下命令,代码:mysql>showstatuslike'Handler_read_key';+--+---+|Variable_name|Value|+--+---+|Handler_read_key|0|+--+---+1rowinset

3. 查看索引使用情况

使用以下命令,代码:

mysql> show status like 'Handler_read_key';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Handler_read_key | 0     |
+------------------+-------+
1 row in set (0.00 sec)

如果索引正在工作,那么Handler_read_key 会很高,如果查询中出现Handler_read_rnd_next的值很高,则表明查询低效,索引的应用并不合理。

大批量插入时的SQL语句优化

在大量插入时,尤其是并发插入时,mysql往往要承受更高的负载,使用mysql administortar的健康检查就可以发现,其avg的值相当高,在这种情况下,首先要做的是sql语句的优化,比较下面两个句子,后者的速度比前者要快得多。因为减少大量的连接。

复制内容到剪贴板代码:

insert into test values(aa,bb)
insert into test values(cc,dd)
 

insert into test values (aa),(bb),(cc),(dd) 
 

在我的一个实际应用中,由于需要经常有数百个并发的插入,我还采用了insert delayed into来取代insert into,前者与后者的区别是在执行插入语句时,数据保存在内存队列中,待数据库空闲时执行,但是会立即返回一个插入成功的信息。使用insert delayed into时需要注意:此时不能使用mysql_insert_id(),因为此时并没有真正插入。对特别重要的数据不宜采用该语句,避免数据以外丢失。

其他方面的杂谈

1.mysql myisam 表超过4G无法访问的解决

myisam引擎默认是支持4GB,innodb理论上可以到6TB,假设单张表容量超过4GB,可能导致表都无法访问了。可以通过以下命令增加表最大数据量:

复制内容到剪贴板

代码:

mysql> alter table user MAX_ROWS=1000000000 AVG_ROW_LENGTH=15000;
Query OK, 2 rows affected (0.09 sec)
Records: 2  Duplicates: 0  Warnings: 0

这样修改后数据文件可以支持到208TB左右。

上一页  1 2 3 4 5 

Tags:详解 MySQL 实用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接