一、MySQL底层原理
mysql版本
5.x
5.4-5.x mysql整合了三方公司的新存储引擎
mysql分类
mysql-client
mysql-server
安装方式
- yarm
- tar.gz
- rpm
$ rpm -ivh MySQL-server-xxx.rpm $ rpm -ivh MySQL-client-xxx.rpm
安装后仔细看安装过程的提示内容
报错: 安装冲突
解决: $ yarn -y remove 软件名*
报错: GPG keys…
解决: $ rpm -ivh 软件名.rpm –force –nodoeps
安装成功验证:
$ mysqladmin –version
设置密码:
$ /usr/bin/mysqladmin -u root password ‘new123’
报错: 计算机reboot重启后/var/lib/mysql/mysql.sock不存在
解决: mysql服务没有启动
开机自启: $ chkconfig mysql on
检查是否设置开机自启:
$ nysysv //查看服务现是否*
查找数据库存放目录:
$ ps -ef|grep mysql
datadir=/var/lib/mysql –pid-file=/var/1ib/mysql/bi gdata01. pid
datadir =数据库目录
pid-file=pid文件目录
rpm安装后核心目录:
- /var/lib/mysql 安装目录
- /usr/share/mysql 配置文件
- /usr/bin 命令目录(mysqladmin. mysqldump等 )
- /etc/init.d/mysql mysql启停脚本
mysql配置文件
- my-huge. cnf 高端服务器1-2G内存
- my- large. cnf 中等规模
- my-medium. cnf 一 般
- my-small. cnf 较小
但是,以上配置文件mysq1默认不能识别,默认只能识别/etc/my. cnf
//采用my-huge. cnf :
$ cp /usr/ share/mysq1/my -huge. cnf /etc/my.cnf
注意:
- Mysql5. 5默认配置文件/etc/my. cnf;
- Mysql5. 6默认配置文件/etc/mysql-default. cnf;
mysql字符编码:
mysql> show variables like ' %char%’;
可以发现部分编码是latin, 需要统一设置为utf-8
设置编码:
//编辑my.cnf配置 $ vi /etc/my.cnf
[mysql]
default-character -set=utf8
[client]
default-character-set=utf8
[mysqld]
character_ set_ server=utf8
character_ _set_ _client=utf8
collation_ server-utf8_ general. ci
重启Mysql:
$ service mysql restart
验证是否生效:
mysql> show variables. like ' %char%'. ;
注意事项:修改编码只对“之后”创建的数据库生效,因此我们建议在mysq1安装完毕后,第一时间更新旧数据编码
mysql代码清屏:
ctrl+L,system clear
mysql分层架构
| 连接层 | 提供客户端连接的服务 |
| 服务层 | 1.提供各种用户使用接口(select…) |
| 2.提供SQL优化器 |
| 引擎层 | 提供各种存储数据的方式(InnoDB MySAM) |
| 存储层 | 存储数据 |
MYSQL逻辑分层:
- 连接层
- 服务层
- 引擎层
- 存储层
存储方式
- InnoDB(默认) :事务优先. (适合高并发操作: 行锁)
- MyISAM :性能优先(表锁)
查询数据库引擎:支持哪些引擎?
> show engines ;
查看当前使用的引擎:
> show variables like ' %storage_ engine%’ ;
指定数据库对象的引擎:
> create table tb( id int(4) auto_ increment , name varchar (5) , dept varcahr (5), primary key(id) ) ENGINE=My ISAM AUTO_ INCREMENT= 1 DEFAULT CHARSET=utf8 ;
二、SQL优化
原因:性能低、执行时间太长、等待时间太长、SQL语句欠佳(连接查询)、索引失效、服务器参数设置不当…
a. SQL :
编写过程:
select dinstinct .. from .. join .. on .. where .. group by .. having .. orde.. limit..
解析过程:
from .. on.. join .. where .. group by … having .. select dinstinct .. order .. limit ..
SQL优化主要就是 在优化索引
索引:
相当于书的目录
index是帮助MYSQL高效获取数据的数据结构。索引是数据结构(树: B数、 Hash树… )