一.基础知识
1.MYSQL逻辑上可以分为多少层?
SQL层:查询的解析,优化,执行
存储引擎:数据存储,锁,事务管理,恢复
2.存储引擎最常用有那些?简单的描述下
MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。
BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
Merge:允许MySQLDBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。
Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序。
3,简述在MYSQL数据系统里最常见的系统瓶项有那些?
1.磁盘搜索。
2.磁盘读/写
3.CPU周期
4.内存带宽
备注:
磁盘搜索。需要花时间从磁盘上找到一个数据,用在现代磁盘的平均时间通常小于10ms,因此理论上我们能够每秒大约搜索1000次。这个时间在新磁盘上提高不大并且很难为一个表进行优化。优化它的方法是将数据分布在多个磁盘上。
磁盘读/写。当磁盘放入正确位置后,我们需要从中读取数据。对于现代的磁盘,一个磁盘至少传输10-20Mb/s的吞吐。这比搜索要容易优化,因为你能从多个磁盘并行地读。
CPU周期。我们将数据读入内存后,需要对它进行处理以获得我们需要的结果。表相对于内存较小是最常见的限制因素。但是对于小表,速度通常不成问题。
内存带宽。当CPU需要的数据超出CPU缓存时,主缓存带宽就成为内存的一个瓶颈。这在大多数系统正是一个不常见的瓶颈但是你应该知道它
4.MYSQL的备份有多少种,请简要的描述:
A.直接拷贝数据文件到安全地方进行保存
B.使用MYSQLHOSTCOPY备分数据
C.使用MYSQLDUMP备份数据
D.使用MYSQL的同步复制,实现数据实时数据同步备份
5.MYSQL CLUSTER 的环境主要由那三部份组成的?
1.管理各个节点的MANAGE节点主机
2.SQL层的SQL服务器节点
3.STORAGE层的NDB数据节点。
二.综合题
1. 为什么要对MYSQL的表进行分区
1.与单个磁盘或文件系统分区相比,可以存储更多的数据
2. 对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。
3. 一些查询可以得到极大的优化
4. 涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理
5. 通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量
2. 简述MYSQL的常用的优化工具或监控工具有那些?
Mysqlreport,mysqlsla
Iostat ,vmstat,top
3. .优化INNODB性能会考虑那几方面?
1基础设施:硬件,CPU,内存,磁盘等
2操作系统;OS是基于LINUX还是WINDOS同,及32位还是64位
3.MYSQL的INNODB的设置,如:innodb_buffer_pool_size ,innodb_log_file_size ,innodb_log_buffer_size,innodb_flush_log_at_trx_commit,innodb_thread_concurrency,等
4.生产应用
5.标准的SQL编写
4. Mysql用户与权限管理:
A)开放DBA用户管理MySQL中具体数据库(testdb)的权限;
grant all privileges on testdb todba1@'192.168.0.10'identified by "dbapasswd";
B)开放user用户管理MySQL中具体数据库的表(testdb.table1)的权限
grant all on testdb.teable1 touser@'192.168.0.10'identified by "dbapasswd";
C)开放user用户管理MySQL中具体数据库的表(testdb.table1)的部分列的权限
grant select(id, se, rank) on testdb.table1to user@'192.168.0.10'identified by "dbapasswd";
5. 写出INNODB存储引擎的基于二进制时间点的备份与恢复,mysql的安装目录为:/usr/local/mysql,数据库名为:db
全备份:/usr/local/mysql/bin/mysqldump --single-transaction--flush-logs --master-data=2 -u root -p*** db1>full_0625.sql
增量备份:用 flush logs 来生成数据库增量备份(二进制日志文件)
mysqladmin -u root -p*** flush-logs
每隔一段时间执行此步骤,来生成增量备份文件,例如,每半小时或者每15分钟。
恢复:
第一种恢复
首先:
/usr/local/mysql/bin/mysq -u root -p db1<full_0625.sql
然后:
mysqlbinlog mysql-bin.000002 | mysql
mysqlbinlog mysql-bin.000003 | mysql
mysqlbinlog mysql-bin.000004 | mysql
mysqlbinlog mysql-bin.000005 | mysql
第二种恢复
1. /usr/local/mysql/bin/mysq -u root -p db1<full_0625.sql
2. 使用MySQL工具 mysqlbinlog 来把增量备份产生的二进制文件转化为 SQL 文本文件
mysqlbinlog -u root -p*** mysql-bin.000002 >mysql-bin.000002.sql
3. 依次使用 MySQL 数据库增量备文件,来恢复数据库
mysql -uroot -p***<mysql-bin.000001.sql
mysql -uroot -p***<mysql-bin.000002.sql
mysql -uroot -p***<mysql-bin.000003.sql
mysql -uroot -p***<mysql-bin.000004.sql
mysql -uroot -p***<mysql-bin.000005.sql
6. 获取MYSQL锁的等待情况可以通过检查那个变量来了解表的争夺
table_locks_waited,table_locks_immediate
7. 请写出MYSQL常用自带工具的五种?
Mysql,mysqladmin, mysqldump,mysqlhotcopy,mysqldumpslow
8. 优化INNODB性能会考虑那几方面?
待补充