访问他人数据库

在localhost的那台电脑,登入MYSQL后,更改”MYSQL”数据库里的”user”表里的”host”项
update user set host=% where user = root;

数据库:物理操作系统文件或其他形式文件类型的集合

实例:MySQL数据库由后台线程以及一个共享内存区组成。
需要牢记的是,数据库实例才是真正用于操作数据库文件的。

数据库是由一个个文件组成(一般都是二进制文件)的,要对这些文件执行select /insert/update/delete之类的
数据库操作是不能通过简单的操作文件来更改数据库的内容,需要通过数据库实例来完成对数据库的操作

MySQL被设计成一个单进程多线程架构的数据库,MySQL数据库实例在系统上的表现就是一个进程

InnoDB存储引擎

存储引擎是基于表的,而不是基于数据库的

innodb引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用,其特点是行锁设计,支持外键

有四种隔离级别,默认是repeatable级别

innodb存储引擎采用聚集的方式,因此每张表都是按主键的顺序进行存放。
如果没有显示地在表定义时指定主键,innodb会为每一行生成一个6字节地rowid,并以此作为主键(非空唯一的键)

MYISAM存储引擎

不支持事务、表锁设计、支持全文索引,主要面向一些OLAP数据库应用

是5.5.8版本之前的默认存储引擎

缓冲池

数据库的缓冲池是通过LRU(latest recent used,最近最少使用)算法来管理的。
即最频繁使用的页在lru列表的前端,而最少使用的页在LRU列表的尾端。
当缓冲池不能存放新读取到的页时,将首先释放LRU列表中尾端的页
在innodb中,缓冲池中的页的大小默认为16KB,同样使用LRU算法。

image.png

文件

参数文件:告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数

日志文件:如错误日志文件、二进制日志文件、慢查询日志文件、查询日志文件

socket文件:当用unix域套接字方式进行连接时需要的文件

pid文件:MySQL实例的进程id文件

MySQL表结构文件:用来存放MySQL表结构定义文件

存储引擎文件:因为MySQL表存储引擎的关系,每个存储引擎都会有自己的文件来保存各种数据

参数
可以把参数当作键值对
image.png
1G就是值

查看参数show variables
也可以用like过滤

参数类型

动态参数:意味着可以在MySQL实例运行中进行更改
静态参数:说明在整个实例生命周期内都不得进行更改,就好像是只读(read only)

可以通过set命令对动态的参数值进行修改
image.png

慢查询日志

通过错误日志可以得到一些关于数据库优化的信息,而慢查询日志(slow log)可帮助DBA定位可能存在问题的sql语句,从而进行优化
例如,可以在MySQL启动时设置一个阈值,将运行时间超过该值的所有的SQL语句都记录到慢查询日志文件中

DBA每天或过一段时间对其进行检查,确认是否有SQL语句进行优化

该阈值可以通过参数long_query_time来设置,默认值为10,代表10秒

在默认情况下,MySQL数据库并不启动慢查询日志,用户需要手动将参数设置为on

首先查询一下 long_query_time 的值
mysql> show variables like ‘long%’;
+————————-+———-+
| Variable_name | Value |
+————————-+———-+
| long_query_time | 10 |
+————————-+———-+
1 row in set (0.00 sec)
此处即意为: 慢于10s的查询才被归为”慢查询”.

为了方便测试,将修改慢查询时间为 5 秒。
mysql> set long_query_time=5;
Query OK, 0 rows affected (0.02 sec)
以上操作只限于当前有效,关闭服务器得重新设置。下面的方法可直接写入my.cnf
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=1