一、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逻辑分层:
  1. 连接层
  2. 服务层
  3. 引擎层
  4. 存储层
存储方式
  • 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树… )

作者 admin

百度广告效果展示