MYSQL优化
Posted liron
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL优化相关的知识,希望对你有一定的参考价值。
MyISam引擎:
1.query_cache_size mysql查询缓存保存查询返回的完整结果。当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段。 SHOW STATUS LIKE ‘Qcache%‘; 当查询中有一些不确定的数据时,是不会缓存的,比方说now(),current_date(),自定义函数,存储函数,用户变量等
2.sort_buffer_size 默认256K,是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存 ; show variables like ‘%sort_buffer_size%’;
3.join_buffer_size 当join是ALL,index,rang或者Index_merge的时候使用的buffer。nest loop的处理过程,由于第二个表可能需要访问多次,在每个conncection都会有一个buffer来尽量避免从存储引擎提取数据; SELECT @@join_buffer_size;
4.key_buffer_size只对MyISAM表起作用,代表为索引缓存一次分配的大小,show status like ‘key_read%‘;,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理
5.read_buffer_size 对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。
6.read_rnd_buffer_size MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率。
7max_heap_table_size 内存临时表最大值
8.thread_cache_size 这个值表示可以重新利用保存在缓存中线程的数量,当断开 连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线 程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能
9table_cache_size 当某一连接访问一个表时,mysql会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。show global status like ‘open%_tables‘;
比较适合的值:Open_tables / Opened_tables >= 0.85.
以上是关于MYSQL优化的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段