mysql数据库的存放位☾置在哪里
mysql数据库的存放位置在哪里
1138 浏览 7 回答
Mysql数据库地址是什么怎么填写
Mysql数据库地址:C:ProgramDataMySQLMySQL Server 5.5data。具体情况:
一、Mysql数据使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI。默认存放位置是C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data。
二、Mysql数据使用InnoDB存储引擎,数据库文件类型包括.frm、ibdata1、.ibd。存放位置有两个:
1、.frm文件默认存放位置是C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data。
2、ibdata1、.ibd文件默认存放位置是MySQL安装目录下的data文件夹:C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data。
mysql8查询原理
基本步骤为:
1.客户端发送一条查询给服务器。
2.服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。
3。服务器端进行SQL解析,预处理,再由优化器生成对应的执行计划
4。MySql根据优化器生成的执行计划,调用存储引擎的API执行查询。
5。返回结果给客户端。
MySQL客户端/服务器通信协议
MySQL客户端和服务器之间的通信协议是“半双工”的,这意味着,在任何野时刻,要么是由服务器向客户端发送数据,要么是客户端向服务器发送数据,这两个动作不能同时执行。所☼以,我们无法也无须将也消息切成小块独立来发送。
这种协议让MySQL通信简单快速,但是也从很多地方限制了MySQL。一端开始发送消息,另一端要接受完整个消息才能响应它。这就像来回抛球的游戏:在任何时刻,只有一个人能控制球,而且只有控球的人才能将球发回去。
相反的,一般服务器响应给用户的数据通常很多,由多个数据包组成。当服务器开始响应客户端请求时,客户端必须完整地接受整个返回结果,而不能简单地只去前面这个结果,然后让服务器停止发送。这就是为什么要加Limit
查询状态
对于一个MySQL连接,或者说一个线程,任何时刻都有一个状态,该状态表示了MySQL当前正在做什么,最简单是使用SHOW FULLPROCESSLIST命令。在一个查询的生命周期中,状态会变化很☭多次。MySQL官方手册对这些状态值的含义最权威的解释:
Sleep:线程等待客户端发送新的请求。
Query:线程正在执行查询或者正在将结果发送给客户端。
Locked:线程在等待表锁。等待行锁时不会出现。
Analyzing and statistics:线程正在收集存储引擎统计信息,并生成查询计划。
Sorting result:线程正在对结果排序。
查询缓存
在解析SQL语句之前,如果查询缓存是打开的,MySql会首先检查这个查询是否命中缓存中的数据。如果当前的查询恰好命中了查询缓存,那么在返回查询结果之前MySQL会检查一次用户权限,如果权限没问题就会返回,这种情况下查询不会被解析,不用生成执行计划,不会被执行。
查询优化处理
在查询缓存的下一步是解析SQL,预处理,优化SQL执行计划。这个过程中任何错误都可能终止查询。
语法解析和预◐处理
首先MySQL通过关键字将SQL语句进行解析,并生成一颗对应的”解析树”。MySQL解析器将使用MySQL语法规则和解析查询。
预处理会根据MySQL规则进一步检查解析树是否合法。
查询优化
如果语法树是被认为是合法的,现在就会通过优化器转化为执行计划。
MysQL使用基于成本的优化器,它将尝试预测一个查询使用某种执行计♠划时的成本,并选择其中成本最小的一个。
有很多原因会导致MySQL优化器会选择错误执行计划。
1。统计信息不准确。
2。执行计划中的成本估算不等同于实际执行的成本。
3。MySQL的最优可能和你想的不一样
4。MySQL不考虑其他并发执行的查询
MySQL可以支持的优化类型:
1。重新定义关联表的顺序
2。外连接转换为内连接
3。使用等价变换规则
4。优化COUNT(),MIN和MAX()——利用索引优化
5。预估转换为常数表达式
6。覆盖索引扫描
7。子查询优化
8。提前终止查询–LIMIT
9。等值传播
10。列表in()的比较–不是简单的or,将其排序并用二分查找的来确定列表中的值是否满足。
如何使用MySQL数据✒库
主从架构— —概念
binlog日志
MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。
复制原理
1. 主库操作保留binlog日志
2. 从库的IO线程从主库拉取binlog日志,并生成中继日志(relay log)
3. 从库的SQL线程解析中继日志,并在本身回放
状态检查
主要通过判断IO线程和SQL线程是否处于Running判断复制是否正常,判断Seconds_Behind_Master参数代表数据同步是否延迟:
mysql> show slave statusG… Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0…
主从架构— —衍生各种扩展的主从架构
1. 一主多从
2. 双主复制
3. 级联复制
4. 等等
读写分离
大部分场景下,读的频率比写的频率会高很多。所以可以通过扩展多个SLAVE节点提高整体的使用性能。
数据备份
传统的备份包括三种
1. lvm snapshot(LVM快照备份)
2. mysqldump
3. Xtarbackup
那么要如何实现数据的一致性备份呢(一致性备份是所有数据/文件/磁盘 需要在同一个时间点进行备份)
LVM SNAPSHOT
1. 执行FTWRL(FLUSH TABLES WITH READ LOCK)
1.1上全局读锁(lock_global_read_lock)
1.2清理表缓存(close_cached_tables)
1.3上全局COMMIT锁(make_global_read_lock_block_commit)
2. 执行lvcreate 创建lv快照.
3. UNLOCK TABLES解锁
MYSQLDUMP
1. 开启可重复读事务隔离
2. 开启事务
3. 建立数据快照(可以理解为select from )
4. 结束事务
XTRABACKUP
1. 不是整体采用备份锁,只有特定阶段。
2. indodb阶段不需要加锁,ACID的C(持续性)是通过Redo log实现,通过线程增量记录redo log实现。
原创文章,作者:Ame,如若转载,请注明出处:https://www.lbseo.cn/13008.html