"查询缓存" ---是把将查到的结果缓存下载,若是查询语句相同,则直接把缓存的结果返回. mysql
若是应用程序在某一个场景 屡次须要查询,且不须要常常更新,则使用查询缓存能够有必定的性能提高。 如图因此能够查看是否开启了缓存功能
query_cache_type的值为on;表示已开启了缓存功能 sql
query_cache_type:是否开启缓存功能,取值为ON, OFF, DEMAND,表示 已启用,已禁用,按照须要缓存,设置在my.cnf中便可。 query_cache_min_res_unit:查询缓存中内存块的最小分配单位,默认4k, 较小值会减小浪费,但会致使更频繁的内存分配操做,较大值会带来浪费,会导 致碎片过多,内存不足 query_cache_limit:单个查询结果能缓存的最大值,默认为1M, 对于查询结果过大而没法缓存的语句,建议使用SQL_NO_CACHE query_cache_size:查询缓存总共可用的内存空间;单位字节,必须是1024 的整数倍,最小值40KB,低于此值有警报 query_cache_wlock_invalidate:若是某表被其它的会话锁定,是否仍然能够 从查询缓存中返回结果,默认值为OFF, 表示能够在表被其它会话锁定的场景中继续从缓存返回数据; ON则表示不容许
SQL_CACHE:显式指定存储查询结果于缓存之中 SQL_NO_CACHE:显式查询结果不予缓存 query_cache_type参数变量 query_cache_type的值为OFF或0时,查询缓存功能关闭 query_cache_type的值为ON或1时,查询缓存功能打开,SELECT的结果符合 缓存条件即会缓存,不然,不予缓存,显式指定SQL_NO_CACHE,不予缓存, 此为默认值 query_cache_type的值为DEMAND或2时,查询缓存功能按需进行,显式指 定SQL_CACHE的SELECT语句才会缓存;其它均不予缓存 # 查询缓存相关的状态变量: SHOW GLOBAL STATUS LIKE ‘Qcache%';
Qcache_free_blocks:处于空闲状态 Query Cache中内存 Block 数 Qcache_total_blocks:Query Cache 中总Block ,当Qcache_free_blocks相对此值较大时,可能用内存碎片,执行FLUSH QUERY CACHE清理碎片 Qcache_free_memory:处于空闲状态的 Query Cache 内存总量 Qcache_hits:Query Cache 命中次数 Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次数,即没 有命中的次数 Qcache_lowmem_prunes:记录由于内存不足而被移除出查询缓存的查询数 Qcache_not_cached:没有被 Cache 的 SQL 数,包括没法被 Cache 的 SQL 以及因为 query_cache_type 设置的不会被 Cache 的 SQL语句 Qcache_queries_in_cache:在 Query Cache 中的 SQL 数量
———————————————— 数据库
MyISAM引擎特色 不支持事务 表级锁定 读写相互阻塞,写入不能读,读时不能写 只缓存索引 不支持外键约束 不支持聚簇索引 读取数据较快,占用资源较少 不支持MVCC(多版本并发控制机制)高并发 崩溃恢复性较差 MySQL5.5.5前默认的数据库引擎
———————————————— vim
MyISAM存储引擎 --适用场景 缓存
只读(或者写较少)、表较小(能够接受长时间进行修复操做) MyISAM引擎文件 tbl_name.frm 表格式定义 tbl_name.MYD 数据文件 tbl_name.MYI 索引文件
———————————————— 并发
InnoDB引擎特色 ide
行级锁 支持事务,适合处理大量短时间事务 读写阻塞与事务隔离级别相关 可缓存数据和索引 支持聚簇索引 崩溃恢复性更好 支持MVCC高并发 从MySQL5.5后支持全文索引 从MySQL5.5.5开始为默认的数据库引擎
全部InnoDB表的数据和索引放置于同一个表空间中 表空间文件:datadir定义的目录下 数据文件:ibddata1, ibddata2, ... 每一个表单独使用一个表空间存储表的数据和索引 启用:innodb_file_per_table=ON 两类文件放在数据库独立目录中 数据文件(存储数据和索引):tb_name.ibd 表格式定义:tb_name.frm 管理存储引擎 查看mysql支持的存储引擎 show engines; 查看当前默认的存储引擎 show variables like '%storage_engine%'; 设置默认的存储引擎 vim /etc/my.conf [mysqld] default_storage_engine= InnoDB 查看库中全部表使用的存储引擎 show table status from db_name; 查看库中指定表的存储引擎 show table status like ' tb_name '; show create table tb_name; 设置表的存储引擎: CREATE TABLE tb_name(... ) ENGINE=InnoDB; ALTER TABLE tb_name ENGINE=InnoDB;