mariadb> SHOW GLOBAL VARIABLES; 全局变量影响服务器的全局操作

mariadb> SHOW [SESSION] VARIABLES; 客户端变量,只对当前会话生效

注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效

有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置

修改服务器变量的值

全局:  mariadb> SET GLOBAL system_varname=value;

     mariadb> SET @@global.system_varname=value;

会话:  mariadb> SET [SESSION] system_varname=value;

例如: set global sql_mode=strict_trans_tables;   常用MODE:TRADITIONAL, STRICT_TRANS_TABLES

sql_mode默认为空,建议开发人员将这个值设为严格模式,这样有些问题可以在数据库的设计和开发阶段就能发现,而如果在生产环

境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大

状态变量:用于保存mariadb运行中的统计数据的变量

       mariadb> SHOW GLOBAL STATUS;

     mariadb> SHOW [SESSION] STATUS;

如何获取程序默认使用的配置:mysql --print-defaults(客户端)    mysqld --print-defaults(服务端)

查看mariadb的线程:show processlist;

mariadb工作于单进程多线程模式,下面是一张mariadb架构图

mariadb查询执行路径

    1:客户端发送一条查询给服务器

    2:服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段

    3:服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划

    4:MariaDB根据优化器生成的执行计划,调用存储引擎的API来执行查询

    5:将结果返回给客户端

上面这张图可以看到整个students表中,StuID字段有一个叫PRIMARY的索引

key: PRIMARY 此次查询用到的索引  type: const 这个字段表示查询一行,在数据库中直接加载一行(rows: 1),这就是索引的效

果,通过索引直接定位到了要加载的行

age字段中没有索引,type: ALL:进行了全表扫描,取了25行(rows: 25),  把所有行都取出来后使用where条件对每一行逐个过滤

(Extra: Using where)

如果表的数据大的话,第二种相对于第一种查询会很慢!!

查询缓存:

    查询语句任何字符上的不同,都会导致缓存不能命中,缓存的数据都放在内存中

    哪些查询可能不会被缓存:查询中包含UDF、存储函数、用户自定义变量、临时表、mysql库中系统表、或者包含列级权限的

    表、有着不确定值的函数(Now())

查询缓存相关的服务器变量:query_cache_min_res_unit: 查询缓存中内存块的最小分配单位

       较小值会减少浪费,但会导致更频繁的内存分配操作,较大值会带来浪费,导致碎片过多

        query_cache_limit:能够缓存的最大查询结果

        query_cache_size:查询缓存总共可用的内存空间;单位是字节,必须是1024的整数倍,默认为0表示不开启

query_cache_wlock_invalidate:如果某表被其它的连接锁定,是否仍然可以从查询缓存中返回结果;默认值为OFF,表示可以在表

被其它连接的场景中继续从缓存返回数据;ON则表示不允许

以上变量可以通过show global variables like '%query%';命令获取

查看缓存命中次数:show global status like 'Qcache%';

查看查询次数show global status like 'com_select';

缓存命中率的评估:Qcache_hits/(Qcache_hits+Com_select)

  

             

mariadb一些命令介绍及mariadb架构图和索引的更多相关文章

  1. centos7安装MariaDB以及Failed to start mariadb.service: Unit not found的错误解决

    centos7下yum安装MariaDB CentOS 7下mysql下替换成MariaDB了.MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权 许可 Mari ...

  2. Mariadb/Mysql命令行常用命令

    一.初始化等 1.登陆数据库方法    mysql -u 用户名 -p 用户密码 2.修改root及用户密码 use mysql; update user set password=password( ...

  3. Linux下面MariaDB 管理命令基础使用

    MariaDB 是 MySQL 的一个分,由于某些原因,使之取代了Mysql成为了 RHEL/CentOS 7 的默认数据库.针对数据库的操作我们经常做的操作就是增删查改,接下来就介绍下 MariaD ...

  4. MariaDB基础命令

    关闭防火墙和selinux #systemctl stop firewalld 安装服务端和客户端mariadb # yum install mariadb-server mariadb -y mar ...

  5. [ Mariadb ] 通过HAProxy代理后端Mariadb实现负载均衡

    一.本次环境架构图 由于公司内网服务器有限,所以后端采用Mariadb自带的mysql_multi模型实现多实例. mysql的多实例有两种方式可以实现,两种方式各有利弊. 1.使用多个配置文件启动不 ...

  6. 常见Struts、Hibernate、Spring、J2EE、ibatis、Oracle等开发框架架构图及其简介

    各种系统架构图及其简介 转载请保留出处,不胜人生一场醉汇总. 以下文字和架构图均在本人相关系统设计和架构方案中有所应用. 原文出处:http://space.itpub.net/6517/viewsp ...

  7. 一、MegaCli命令介绍

    一.MegaCli命令介绍 MegaCli是一款管理维护硬件RAID软件,可以用来查看raid信息等MegaCli 的Media Error Count: 0 Other Error Count: 0 ...

  8. Docker实用命令介绍

    Docker实用命令介绍 1. docker启动.关闭.停止 ╭─wil-xz in ~ 12:15:44 ╰─٩(ŏ﹏ŏ.)۶ service docker restart Redirecting ...

  9. ENode 2.8 最新架构图简介

    ENode架构图 什么是ENode ENode是一个.NET平台下,纯C#开发的,基于DDD,CQRS,ES,EDA,In-Memory架构风格的,可以帮助开发者开发高并发.高吞吐.可伸缩.可扩展的应 ...

随机推荐

  1. Problem 1274 - 可怜的lpx

    Problem 1274 - 可怜的lpx Time Limit: 1000MS   Memory Limit: 65536KB    Description 可怜的lpx终于在别人的帮助下追上了aq ...

  2. 问题:glGenBuffers()函数没有定义怎么办

    链接glew.lib库,#include <gl/glew.h>. glew是opengl 的扩展库

  3. 关于java.lang.String理解中的一些难点

    最近温习java的一些基础知识,发现以往对String对象认识上的一些不足.特汇总如下,主要是帮助记忆,如能对其他朋友有些启发,不胜欣喜. String在JVM中内存驻留问题 JVM的常量区(Cons ...

  4. 基于OpenDaylight和Mininet的试验床平台搭建

    ##########################################平台架构######################################### 一.虚拟机安装和镜像加载 ...

  5. Flex4 自定义通用的ImageButton

    Flex4与之前版本的一个极大区别就是外观皮肤的分离,虽然进一步解耦,但存在一个不爽的地方就是增加了编码的工作量,你能想象为你的每个自定义组件都写一个对应的皮肤吗?可能仅仅和你之前写过的组件差了那么一 ...

  6. 【LeetCode】15. 3Sum 三个数和为0

    题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find al ...

  7. sc delete 服务器名提示“指定的服务已经标记为删除”

    症状:停止服务后,右键无法点击“启动”,打开命令输入SC删除服务后提示如标题描述 原因:进程还在 解决方案:打开任务管理器,进程,找到你的已停止服务名,右键,结束进程,再操作即可删除服务

  8. robotframework+ride+Selenium2Library+AutoItLibrary配置

    最近要安装RFS,虽然网上很多安装说明,但是自己装的时候还是遇到了很多问题. 1. AutoLibrary导入失败:猜测原因是AutoLibrary需要先安装pywin32,而我一开始安装的是pyth ...

  9. 前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节

    1:一个小的测试实例 CREATE TABLE SALES.TEST_ ( TEST_BYTE BYTE), TEST_CHAR CHAR) )--TABLE CREATED ')--1 ROW IN ...

  10. epoll在socket通信中的应用

    当服务器需要服务多个客户时,需要使用并发通信,实现并发通信有以下几种方法: 1.在服务器中fork子进程来为每个客户服务  具体可参考http://www.cnblogs.com/ggjucheng/ ...