8000000万条记录,在没有任何索引和其他优化处理的情况下:
一、优化方案:
-
首先通过建索引方式:
给emp(雇员表)的empno添加主键索引
Alert table emp add primary key(empno);
一个表(存储引擎是MyISAM)对应三个文件 XX.frm 表结构,XX.MYD数据文件,XX.MYI是索引文件,通常一个索引文件大小为数据文件的1/3.
添加所有之后:(查询效率明显提升)
Query_time:查询时间,如果比较大则是数据量比较大,优化索引,表结构,查询语句等
Lock_time:等待(锁定)时间,如果比较大则处理吞吐量,通过主从,读写分离等方式
Rows_examined:检索的行数
二、如何选择存储引擎
- MyISAM:默认的mysql存储引擎。如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事物的完整性要求不是很高。其优势是访问的速度快。(尤其适合论坛的帖子/信息表/新闻/商品表)
- InnoDB:提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM,写的处理效率差一些,并且会占用更多的磁盘空间,如果对安全要求高,则用InnoDB(整体趋势)【账户,积分,余额】
- Memory/heap:一些访问频繁,变化频繁,有没有必要入库的数据【用户在线状态等】数据库一关闭该类的表数据则会被删除,结果保留。