MySQL高级见识之 架构介绍
引荐(免费):mysql视频教程
1、MySQL 简介
概述
MySQL是一个关系型数据库治理系统,由瑞典MySQL AB公司开发,当前属于Oracle公司。
MySQL是一种关联数据库治理系统,将数据留存在不一样的表中,而不是将所有数据放在一个大仓库内,这样就增添了速度并提高了灵敏性。
Mysql是开源的,所以你不需要支付额外的费用。
Mysql支撑大型的数据库。可以处置具有上千万笔记录的大型数据库。
MySQL使用标准的SQL数据说话情势。
Mysql可以同意于多个系统上,并且支撑多种说话。这些编程说话包罗C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
Mysql对PHP有很好的支撑,PHP是当前最流行的Web开发说话。
MySQL支撑大型数据库,支撑5000万笔记录的数据仓库,32位系统表文件最大可支撑4GB,64位系统支撑最大的表文件为8TB。
Mysql是可以定制的,采纳了GPL和谈,你可以修改源码来开发本人的Mysql系统。
高级MySQL触及到知识
- mysql内核
- sql优化攻城狮
- mysql效劳器的优化
- 各种参数常量设定
- 查询语句优化
- 主从复制
- 软硬件升级
- 容灾备份
- sql编程
完全的mysql优化需要很深的功底,大公司乃至有专门的DBA写上述
2、MySQL Linux版的安置
- 此次安置的是 MySQL 5.5, 安置环境 CentOS 6.5
- 版本下载地址 官网下载地址
- 下载 MySQL-Client 和 MySQL-Server
- http://downloads.skysql.com/archives/mysql-5.5/MySQL-server-5.5.16-1.rhel4.i386.rpm
- http://downloads.skysql.com/archives/mysql-5.5/MySQL-client-5.5.16-1.rhel4.i386.rpm
- http://downloads.skysql.com/archives/mysql-5.5/MySQL-devel-5.5.16-1.rhel4.i386.rpm
- 检查当前系统可否安置过MySQL
- 查询命令:
rpm -qa|grep -i mysql
- 删除命令:
rpm -e --nodeps RPM包全名
- 查询命令:
- 安置mysql效劳端(留意提醒)
- 安置mysql客户端
- 查看MySQL安置时创立的mysql会员和mysql组
# cat /etc/passwd | grep mysql
# cat /etc/group | grep mysql
- mysql效劳的启+停
- 查看MySQL启停状态:
# ps -ef | grep mysql
- 启停操纵:
# /etc/init.d/mysql start
# /etc/init.d/mysql stop
- 或者
#service mysql start
#service mysql stop
- 设定MySQL 自启效劳
#chkconfig mysql on
设定主动启动# chkconfig --list | grep mysql
检查可否设定了主动启动
- 修改配置文件位置
- 拷贝当前5.5版本:
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
- 5.6版本
cp /usr/share/mysql/my-default.cnf /etc/my.cnf
- 拷贝当前5.5版本:
- 修改字符集和数据储备途径
- 查看字符集
show variables like 'character%';
show variables like '%char%';
- 查看字符集
- 查看MySQL启停状态:
- 默许的是客户端和效劳器都用了latin1,所以会乱码。
- 修改字符集,修改此前copy 的配置文件。(具体后续代码)
- MySQL的安置位置
- 在linux下查看安置名目
ps -ef|grep mysql
- 在linux下查看安置名目
途径 | 说明 | 备注 |
---|---|---|
/var/lib/mysql/ | mysql数据库文件的存置途径 | /var/lib/mysql/atguigu.cloud.pid |
/usr/share/mysql | 配置文件名目 | mysql.server命令及配置文件 |
/usr/bin | 相关命令名目 | mysqladmin mysqldump等命令 |
/etc/init.d/mysql | 启停相关足本 |
[client] #password = your_password port = 3306 socket = /var/lib/mysql/mysql.sock # 这一行需要设定字符集 default-character-set=utf8 # The MySQL server [mysqld] port = 3306 # 还有这三行 character_set_server=utf8 character_set_client=utf8 collation-server=utf8_general_ci socket = /var/lib/mysql/mysql.sock skip-external-locking key_buffer_size = 384M max_allowed_packet = 1M table_open_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 [mysql] no-auto-rehash # 还有这一行 default-character-set=utf8
3、Mysql配置文件
主要配置文件
- 二进制日志log-bin
- 主从复制
- 错误日志log-error
- 默许是关闭的,记载严峻的警告和错误信息,每次启动和关闭的具体信息等。
- 查询日志log
- 默许关闭,记载查询的sql语句,假如开启会减低mysql的团体机能,由于记载日志也是需要耗损系统资源的
- 数据文件
- 两系统
- windows
- D:\devSoft\MySQLServer5.5\data名目下可以选择许多库
- Linux:
- 默许途径
#cd /var/lib/mysql/
- 看看当前系统中的全部库后再进去
#ls -1F | grep ^d
- 默许途径
- windows
- frm文件: 存置表构造
- **myd文件: ** 存置表数据
- **myi文件: ** 存置表索引
- 两系统
- 怎样配置
- Windows: my.ini文件
- Linux: /etc/my.cnf文件
4、Mysql逻辑架构介绍
总体概览
- 和其它数据库比拟,MySQL有点不同凡响,它的架构可以在多种不一样场景中利用并发挥良好作用。主要表现在储备引擎的架构上,插件式的储备引擎架构将查询处置和其它的系统任务乃至数据的储备提取相别离。这种架构可以按照业务的需求和实际需要选中适宜的储备引擎。
- 1、连接层
- 最上层是一些客户端和连接效劳,包括当地sock通讯和大多数基于客户端/效劳端工具实现的相似于tcp/ip的通讯。主要完成一些相似于连接处置、授权认证、及相关的平安方案。在该层上引入了线程池的概念,为通过认证平安接入的客户端供给线程。一样在该层上可以实现基于SSL的平安链接。效劳器也会为平安接入的每个客户端验证它所具有的操纵权限。
- 2、效劳层
- 第二层架构主要完成大多少的中心效劳功效,如SQL接口,并完成缓存的查询,SQL的剖析和优化及部分内置函数的施行。所有跨储备引擎的功效也在这一层实现,如历程、函数等。在该层,效劳器会解析查询并创立响应的内部解析树,并对其完成响应的优化如肯定查询表的次序,可否利用索引等,最后生成响应的施行操纵。假如是select语句,效劳器还会查询内部的缓存。假如缓存空间足够大,这样在解决大量读操纵的环境中能够很好的晋升系统的机能。
- 3、引擎层
- 储备引擎层,储备引擎真正的负责了MySQL中数据的储备和提取,效劳器通过API与储备引擎停止通讯。不一样的储备引擎具有的功效不一样,这样我们可以按照本人的实际需要停止拔取。后面介绍MyISAM和InnoDB
- 4、储备层
- 数据储备层,主如果将数据储备在运转于裸设备的文件系统之上,并完成与储备引擎的交互。
查询说明
- 第一,mysql的查询流程大致是:
- mysql客户端通过和谈与mysql效劳器建连接,发送查询语句,先检查查询缓存,假如命中,直接返回结果,不然停止语句解析
- 有一系列预处置,比方检查语句可否写准确了,然后是查询优化(比方可否使用索引扫描,假如是一个不成能的前提,则提早终止),生成查询方案,然后查询引擎启动,开端施行查询,从底层储备引擎调取API猎取数据,最后返回给客户端。如何存数据、如何取数据,都与储备引擎有关。
- 然后,mysql默许使用的BTREE索引,并且一个大标的目的是,不管如何折腾sql,至少在当前来说,mysql最多只用到表中的一个索引。
5、Mysql储备引擎
- 查看命令
- 查看当前的MySQL 供给什么储备引擎
mysql> show engines;
- 看你的 MySQL 当前默许的储备引擎:
show variables like '%storage_engine%';
- 查看当前的MySQL 供给什么储备引擎
MyISAM
和InnoDB
- alibaba、淘宝用哪个
- Percona 为 MySQL 数据库效劳器停止了改善,在功效和机能上较 MySQL 有着很显著的晋升。该版本晋升了在高负载状况下的 InnoDB 的机能、为 DBA 供给一些非常有用的机能诊断工具;别的有更多的参数和命令来操纵效劳器行动。
- 该公司创建了一款储备引擎叫
xtradb
完全可以替换innodb
,并且在机能和并发上做得更好, - alibaba大部分mysql数据库其实使用的percona的原型加以修
以上就是MySQL高级知识之 架构介绍的具体内容,更多请关注百分百源码网其它相关文章!