mysql文档摘要续2

mysql优化续:

1:show index from table_name查看索引使用情况其中cardinality基数,即value group索引区分度,当cardinality越小时需要扫描的行数越多,越大是则越小。

2:mysql评价索引扫描数据量非常大时可能会放弃使用,当使用limit时,情况可以改变,mysql会采用索引

3:针对mysql的行格式row format。innodb最新版本采用COMPACT,老版本是REDUNDANT,使用新的格式或减少20%的磁盘空间,相应的会增加cpu时间,在char类型存储utf-8字符时,老版本都是3*N的字节,新版本是N ~ 3*N

4:在低于8KB的字段存储是尽量使用varchar而不是blob,在group by 和order by可以产生临时表,在没有blob字段的情况下临时表可以使用memory 引擎。

5:在有许多并不常用的字段表时,通常建议将这些字段拆开到另外的表中,通过join去处理,特别是blob、text类型时。

6:optimizer_switch该参数可以查看mysql采用的一些优化策略,如MRR,ICP等是否打开,都可以手动设置

7:index hints 可以使用use index ,force index, ignore index来影响mysql的所以选择

8:innodb_buffer_pool可以存储select、insert、update等操作数据(包括索引跟数据库数据),来提升性能,采用LRU算法替换相应的block,将数据块插入到list中间默认大概在5/8左右可以手动调整,这样可以防止数据频繁刷新。

9:myisam key_cache存储索引数据,数据库数据则由本地的操作系统文件系统缓存,myisam也可以采用Midpoint Insertion Strategy,在key_cache不可用时(如重建)mysql会启用本地的文件系统缓存(当然性能上会有所降低)。

10:mysql最左匹配原则有个非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配。

11:索引列不能参与计算,b+树中存的都是数据表中的字段值,应用函数显然成本太大。

mysql character set & collation:

character set 字符集,字符集包括ascii、gb2312、big5、unicode等,字符编码包括ascii编码、gb2312编码、gbk、utf8,在mysql里面character set 代表字符集编码。

collation:校对集,即用于指定数据集如何排序,以及字符串的比对规则。

存储方面:character_set_server 、character_set_database、character_set_table、character_set_column一级一级下来细分,同时对应相应的collation。

连接方面:character_set_client、character_set_connection、character_set_results.客户端通过character_set_client发送数据,服务器通过将数据转换成character_set_connection所设,最后服务器将结果集按照character_set_results返回给client。如果出现值为null,则不转换,并且转换时有可能发生错误。

 

posted @ 2015-08-13 23:21  scu_2008_hike  阅读(170)  评论(0编辑  收藏  举报