作为一名MySQL数据库DBA(数据库管理员),主要需要学习的是数据库管理系统原理、SQL语言、数据结构、数据库设计、网络安全、数据库性能优化、备份与恢复、MySQL的高级特性、存储过程、触发器、视图、事务处理、MySQL集群以及故障排除。其中,数据库管理系统原理是基础,是学习其他技能的前提。在数据库管理系统原理中,你将学习到数据库的基本概念,例如什么是数据库,什么是数据模型,数据库系统的组成以及数据库系统的工作原理等。这些知识是你理解数据库运行机制,进行数据库设计,优化数据库性能,处理数据库故障的基础。
一、查询优先还是更新(insert、update、delete)优先
MySQL 还允许改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。我们首先应该确定应用的类型,判断应用是以查询为主还是以更新为主的,是确保查询效率还是确保更新的效率,决定是查询优先还是更新优先。
下面我们提到的改变调度策略的方法主要是针对只存在表锁的存储引擎,比如 MyISAM 、MEMROY、MERGE,对于Innodb 存储引擎,语句的执行是由获得行锁的顺序决定的。
MySQL 的默认的调度策略可用总结如下:
1)写入操作优先于读取操作。
2)对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。
3)对某张数据表的多个读取操作可以同时地进行。
MySQL 提供了几个语句调节符,允许你修改它的调度策略:LOW_PRIORITY关键字应用于DELETE、INSERT、LOAD DATA、REPLACE和UPDATE;HIGH_PRIORITY关键字应用于SELECT和INSERT语句;DELAYED关键字应用于INSERT和REPLACE语句。
二、非关系型数据库
非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”(不仅仅是关系型数据库),指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句的意思),因此NoSQL并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有效补充。
传统的关系型数据库在应对web 2.0这个高并发、高吞储就很困难。关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是NoSQL(非关系型)数据库就这样诞生了,并得到了非常迅速地发展。
Google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL实现,一些开源的NoSQL体系FaceBook的Cassandra,Apache的HBase也得到了广泛认同,Redisd,mongodb也逐渐的越来越受到各类大中小公司的欢迎和追捧。
总结:NoSQL为什么诞生?
动态请求越来越多,对数据库的要求越来越高。而传统数据库它遵循ACID理论,要保持数据一致性、又要使用结构化查询语句(SQL语句)来对数据进行存储;导致存取速度很慢,而且还要存放到磁盘里面去不能保证数据不丢,所以在这种情况下非关系型数据库就产生了。
三、长事务和Online DDL会产生什么影响?
不管是COPY算法还是INPLACE算法,只要DDL操作复制数据结束之后,DDL操作都需要修改元数据,从而都需要给元数据加EXCLUSIVE类型的锁,因此其他连接如果一直不提交事务,就会导致DDL操作一直获取不到EXCLUSIVE类型元数据锁,也就会导致DDL操作一直完成不了,因此大家在进行DDL操作时,就算是用INPLACE算法,最好也在业务低峰期,这样DDL操作能尽快完成。
四、主从复制
MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的 二进制日志 功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现 从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。
MySQL 主从复制的优点主要包括以下3个方面:
(1)如果主库出现问题,可以快速切换到从库提供服务;
(2)可以在从库上执行查询操作,降低主库的访问压力;
(3)可以在从库上执行备份,以避免备份期间影响主库的服务