大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7480字,纯文字阅读大概需要11分钟。
内容图文
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制](/upload/InfoBanner/zyjiaocheng/509/37963132153f41cc8a797fb3ccef8797.jpg)
先完成再完美,先功能再性能。
大胆假设,小心求证。
第1章 Mysql 简介
1.1 概述
??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 系统。
1.2 高级 MySQL
??完整的 mysql 优化需要很深的功底,大公司甚至有专门的 DBA 写下述内容:
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075119398.jpg)
第2章 Mysql Linux 版的安装
2.1 下载地址
官网下载地址:http://dev.mysql.com/downloads/mysql/
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075119516.jpg)
选择对应的 MySQL 版本、操作系统 和 位数,点击 Download(本博文中以版本 5.5.48 为例)
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075119740.jpg)
下载地址:
https://downloads.mysql.com/archives/get/file/MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
https://downloads.mysql.com/archives/get/file/MySQL-client-5.5.48-1.linux2.6.x86_64.rpm
2.2 检查当前系统是否安装过 mysql
第一步:以 root 身份登录,查看 mysql 是否安装。
rpm -qa | grep mysql
第二步:以 root 身份登录,如果 mysql 的版本不是想要的版本。需要把原来的 mysql 卸载。
使用 yum 命令卸载
yum remove mysql mysql-server mysql-libs mysql-common
使用 rpm 命令卸载
rpm -e RPM软件包名(该名字是第一步命令查出来的名字)
rm -rf /var/lib/mysql
rm -f /etc/my.cnf
注意
:使用 yum 命令卸载,因为 yum 命令可以自动删除与 mysql 相关的依赖;如果使用 rpm 命令卸载,则还需要手动去删除和mysql相关的文件。
第三步1:安装 mysql。需要使用 yum 命令安装。在安装 mysql 之前需要安装 mysql 的下载源。需要从 oracle 的官方网站下载。
1)下载 mysql 的源包:
我们是 centos6.8 对应的 rpm 包为:mysql-community-release-el6-5.noarch.rpm
命令:wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
2)安装 mysql 下载源:
yum localinstall mysql-community-release-el6-5.noarch.rpm
3)在线安装社区版的 mysql:
yum install mysql-community-server
或者在线安装收费版本的 mysql:
yum install mysql-server
两种方式均可,建议安装社区版。
第三步2:我们也可以使用 rpm 命令进行安装。
安装 mysql 服务端(注意提示)
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075119919.jpg)
安装 mysql 客户端
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120066.jpg)
查看 MySQL 安装时创建的 mysql 用户和 mysql 组
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120194.jpg)
或者可以执行
mysqladmin --version
命令。类似 java -version
,如果打出消息,即为安装成功。
mysql 服务的启+停
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120246.jpg)
设置开机自启动 mysql 服务
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120340.jpg)
查看 设置开机自启动 mysql 服务
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120412.jpg)
第四步:启动 mysql。
service mysql start
注意:
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120548.jpg)
第五步:需要给 root 用户设置密码。
/usr/bin/mysqladmin -u root password ‘new-password‘ #为 root 账号设置密码
第六步:登录 mysql。
[root@localhost ~]# mysql -uroot -p
第七步:需要先登录到 mysql,进行远程连接授权。
GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘%‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;
注意
:‘myuser‘、‘mypassword‘ 需要替换成实际的用户名和密码。
2.3 修改 Mysql 配置文件位置
Mysql 5.5 版本:cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
Mysql 5.6 版本:cp /usr/share/mysql/my-default.cnf /etc/my.cnf
2.4 修改字符集和数据存储路径
1、查看字符集
mysql> show variables like ‘character%‘; 或者
mysql> show variables like ‘%char%‘;
默认的 数据库 和 服务器都用了 latin1,所以会乱码。
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120650.jpg)
2、修改
下图中的红色字体部分表示要修改的地方
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120705.jpg)
my.cnf 中要修改的代码如下:
[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
lower_case_table_names=1
max_connections=1000
[mysql]
no-auto-rehash
default-character-set=utf8
3、重启 mysql
service mysql stop
service mysql start
4、重新连接后重新 create databse 并使用新建库,然后再重新建表试试。
5、还是乱码的话就设值 init_connect=‘SET NAMES utf8‘ ##设定连接 mysql 是 UTF8 编码
。
2.5 MySQL 的安装位置说明
在 linux 下查看安装目录,命令:ps -ef | grep mysql
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075120819.jpg)
2.6 Mysql 配置文件说明
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121028.jpg)
2.7 Mysql 的数据存放目录
/var/lib/mysql
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121204.jpg)
第3章 Mysql 逻辑架构介绍
3.1 总体概览
??和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构
上,插件式的存储引擎架构
将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121323.jpg)
3.2 查询说明
??首先,mysql 的查询流程大致是:mysql 客户端通过协议与 mysql 服务器建连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,否则进行语句解析。
??有一系列预处理,比如检查语句是否写正确了,然后是查询优化(比如是否使用索引扫描,如果是一个不可能的条件,则提前终止),生成查询计划,然后查询引擎启动,开始执行查询,从底层存储引擎调用 API 获取数据,最后返回给客户端。怎么存数据、怎么取数据,都与存储引擎有关。
??然后,mysql 默认使用的 BTREE 索引,并且一个大方向是,无论怎么折腾 sql,至少在目前来说,mysql 最多只用到表中的一个索引。
第4章 Mysql 性能优化
4.1 影响 mysql 的性能因素
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121410.jpg)
4.2 查询与索引优化分析
4.2.1 性能下降SQL慢的原因
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121573.jpg)
4.2.2 常见通用的 Join 查询
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121640.jpg)
详解见链接:https://www.cnblogs.com/chenmingjun/p/11012827.html
4.3 mysql 索引结构与检索原理
mysql 索引结构
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121711.jpg)
检索原理
![大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425075121759.jpg)
【初始化介绍】
??一颗 b+ 树,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块 1 包含数据项 17 和 35,包含指针 P1、P2、P3,P1 表示小于 17 的磁盘块,P2 表示在 17 和 35 之间的磁盘块,P3 表示大于 35 的磁盘块。
??真实的数据存在于叶子节点即 3、5、9、10、13、15、28、29、36、60、75、79、90、99。
非叶子节点不存储真实的数据,只存储指引搜索方向的数据项,如 17、35 并不真实存在于数据表中。
【查找过程】
??如果要查找数据项 29,那么首先会把磁盘块 1 由磁盘加载到内存,此时发生一次 IO,在内存中用二分查找确定 29 在 17 和 35 之间,锁定磁盘块 1 的 P2 指针,内存时间因为非常短(相比磁盘的 IO)可以忽略不计,通过磁盘块 1 的 P2 指针的磁盘地址把磁盘块 3 由磁盘加载到内存,发生第二次 IO,29 在 26 和 30 之间,锁定磁盘块 3 的 P2 指针,通过指针加载磁盘块 8 到内存,发生第三次 IO,同时内存中做二分查找找到 29,结束查询,总计三次 IO。
内容总结
以上是互联网集市为您收集整理的大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制全部内容,希望文章能够帮你解决大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。