mariadb 存储引擎mysql_MySQL/MariaDB---查询缓存与存储引擎

查询缓存

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

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

如图所以可以查看是否开启了缓存功能

ee805d61147e0cb927b1829483a6d02c.png

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%‘;

81b2022f54dab99915e663bd47a90385.png

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

66cbf0be5e2c8910cc9e6e1fda4fc4a8.png

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

存储引擎

MyISAM引擎特点

?不支持事务

?表级锁定

?读写相互阻塞,写入不能读,读时不能写

?只缓存索引

?不支持外键约束

?不支持聚簇索引

?读取数据较快,占用资源较少

?不支持MVCC(多版本并发控制机制)高并发

?崩溃恢复性较差

?MySQL5.5.5前默认的数据库引擎

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

c59f1cc8cc5e430aebb0c6bc1b0632f1.png

MyISAM存储引擎 --适用场景

只读(或者写较少)、表较小(可以接受长时间进行修复操作)

MyISAM引擎文件

tbl_name.frm 表格式定义

tbl_name.MYD 数据文件

tbl_name.MYI 索引文件

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

InnoDB引擎特点

行级锁

?支持事务,适合处理大量短期事务

?读写阻塞与事务隔离级别相关

?可缓存数据和索引

?支持聚簇索引

?崩溃恢复性更好

?支持MVCC高并发

?从MySQL5.5后支持全文索引

?从MySQL5.5.5开始为默认的数据库引擎

cd29a4c70f38e36d4dd99c27d2e4af05.png

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;

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

标签:功能   nod   creat   select   sel   目录   vcc   conf   并发控制

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://blog.51cto.com/14451214/2438986

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值