MySQL/MariaDB---查询缓存与存储引擎
admin
2023-03-07 15:42:55
0

查询缓存

"查询缓存" ---是把将查到的结果缓存下载,如果查询语句相同,则直接把缓存的结果返回.

如果应用程序在某一个场景  多次需要查询,且不需要经常更新,则使用查询缓存可以有一定的性能提升。  
如图所以可以查看是否开启了缓存功能  

MySQL/MariaDB---查询缓存与存储引擎
query_cache_type的值为on;表示已开启了缓存功能

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则表示不允许

SELECT语句的缓存控制

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%';

MySQL/MariaDB---查询缓存与存储引擎

        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 数量    

MySQL/MariaDB---查询缓存与存储引擎
————————————————

存储引擎

MyISAM引擎特点
不支持事务
表级锁定
读写相互阻塞,写入不能读,读时不能写
只缓存索引
不支持外键约束
不支持聚簇索引
读取数据较快,占用资源较少
不支持MVCC(多版本并发控制机制)高并发
崩溃恢复性较差
MySQL5.5.5前默认的数据库引擎  

————————————————

MySQL/MariaDB---查询缓存与存储引擎
MyISAM存储引擎 --适用场景

    只读(或者写较少)、表较小(可以接受长时间进行修复操作)
    MyISAM引擎文件
    tbl_name.frm 表格式定义
    tbl_name.MYD 数据文件
    tbl_name.MYI 索引文件    

————————————————

InnoDB引擎特点

    行级锁
支持事务,适合处理大量短期事务
读写阻塞与事务隔离级别相关
可缓存数据和索引
支持聚簇索引
崩溃恢复性更好
支持MVCC高并发
从MySQL5.5后支持全文索引
从MySQL5.5.5开始为默认的数据库引擎   

MySQL/MariaDB---查询缓存与存储引擎

InnoDB数据库文件

所有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;  

相关内容

热门资讯

新价格项目落地,让医疗真创新更... “让瘫痪的人能动、心衰末期的人能活、万里之外能手术”,这些看似奇迹的变化,背后藏着一个关键支撑—近三...
苹果宣布在印度扩大三项环保举措... 【CNMO科技消息】近日,苹果宣布扩大在印度的环保举措,共推出三个相关项目,覆盖清洁能源、塑料污染治...
华为在数字中国建设峰会:只有根... 作者:王聪彬 “根技术、落地”是华为在第九届数字中国建设峰会想要传递出的两个关键字。 “根技术”顾名...
凤凰女记者战地日记丨飞涨的物价... 【编者按】这是凤凰卫视驻伊朗记者李睿的战地日记。她身处德黑兰,既是战争的亲历者,也是观察者。在她的日...
特朗普:俄乌将实行为期3天的停... △特朗普(资料图)当地时间5月8日,美国总统特朗普在其社交媒体“真实社交”发文表示,在俄罗斯与乌克兰...
《星球大战》男主角发“特朗普躺... 据英国广播公司(BBC)5月8日报道,《星球大战》演员马克·哈米尔在社交平台发布一张AI生成的图片,...
产业园区招商政府委托媒介选型指... 导语:产业园区招商需兼顾资源整合效率与项目落地精准度,尤其在互联网招商模式下,平台流量、技术团队与资...
“无废城市”建设 | 为新材料... 4月26日,在常山生态工业园区的利安隆科润(浙江)新材料有限公司实验室里,企业品控部负责人、科技副总...
既能防晒又能听歌,还自带AI小... 春夏出门运动,你是不是也常常纠结:到底是戴帽子防晒,还是戴耳机听歌?两个都戴上,耳朵被压得生疼,帽檐...
伊朗警告过往船只远离美军舰艇:... 据美国有线电视新闻网(CNN)5月8日报道,一段录音显示,美伊在霍尔木兹海峡发生冲突后,伊朗革命卫队...