日期:2014-05-16  浏览次数:20677 次

mysql 常用语句
SELECT count(*) TABLES,concat(round(sum(table_rows)/1000000,2),'M') rows,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,round(sum(index_length)/sum(data_length),2) idxfrac FROM information_schema.TABLES;



SHOW TABLE STATUS

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';




个人认为InnoDB只是花心的MySQL现阶段青睐的一个存储引擎,之所以成为目前MySQL所发行新版的标准,较之于其它的存储引擎它的优点就是其支持兼容ACID的事务,以及参数完整性即对外键的支持。
innodb的灾难恢复比之前的mysiam优秀很多,且mysiam不支持事务,这点是致命的。
不过google等大公司都使用了innodb作为解决方案之一,我想用innodb做存储引擎应该是经过深思熟虑做出的决定。
InnoDB在技术上是一套放在MySQL后台的完整数据库系统,它在主内存中建立其专用的缓冲池用于高速缓冲数据和索引,从而可以很有效的使用大量的内存。
但InnoDB也有硬伤,比如它的磁盘性能就很令人担心,MySQL缺乏良好的tablespace真是天大的缺陷!如果你测试InnoDB下的Insert/Update/Remove性能绝对让你抓狂,Cache只能解决小数据量的问题,大数据量是不够的,没经历过导入几百万条InnoDB数据到最后看着文件尺寸100KB 100KB的增长,是没法体会痛苦的。
百万行记录插入之后,插入速度下降到了之前的1/30,从开始的1600行/秒衰退到50行/秒,同样的测试环境下,MyISAM没有这样的问题,InnoDB的Roadmap对此问题的时间表是“Long Term”。
MySQL InnoDB只有在满足以下条件下:不需要经常修改表结构,没有经常性的bulk insert和载入数据需求,在没有blob/text字段的前提下,index设置合理比如经常插入就减少 index, 经常查询就增加index,千万级别的插入速度和性能才能稳定。
在主流服务器上插入速度可以达到500 ~ 1000 行每秒,这个是本人实践过后得到的经验,如果你有这方面的需求,那就可以大胆的用MySQL InnoDB,真的很爽!!
如果大家对千万级别记录的表有经常的alter index, alter table, load data, bulk insert的需求,那最好可以选择其他存储引擎,当然也可以考虑使用其他数据库。