袁峥 钟新林 许鼎
摘 要:随着互联网的发展,越来越多人或中小型公司开发时选用MySQL做持久化存储,所以对MySQL有大概的了解是十分有必要的。
关键词:MySQL;数据库;安全;优化;
在写Mysql前,需要先对数据库有一定的了解,数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。随着时代的发展,大数据的到来,出现了非关系型数据库NoSQL(Not only SQL),传统的关系型数据库如Mysql等依然保持着强大的生命力。两种数据库在存储方式、存储结构、存储规范等方面都有区别,应该按照存储数据的数量,并发量、性能来选择合适的数据库。
一、优化
MySQL的安装和使用难度不大,网上教程繁多,MySQL语句简单易懂,但是数据库表和SQL语句的设计影响着数对据库的操作性能,分钟级别的响应经过表和语句的优化可降到毫秒级别,主要的优化手段有加索引、分表、SQL语句优化等,这些方法一般都是采用存储空间换相应速度或者反过来,所以设计数据库时需要根据实际所需。
二、优点
MySQL的优点主要表现在性能的卓越稳定,较少出现异常宕机的情况,源代码的开源和免费,因此使用起来费用成本低。MySQL社区的活跃,sql语句的简单使得学习门槛低。软件体积,安装简单,易于维护,因此运维成本低。使用C和C++编写,并使用多种编译器进行测试,保证源代码的可移植性,可部署多种操作系统,API接口丰富,支持多种开发语言,存储引擎丰富。
三、缺点
MySQL的安全性不如收费数据库的安全性高,但由于MySQL代码开源,许多公司会对MySQL底层做相关的优化。Mysql不支持热备份,当发生故障时,对数据库回复时间点有限制,MySQL也不支持自定义数据类型、对XML支持不够良好、对存储过程和触发器支持不够良好等,但是都有相应的优化方案,依然不减MySQL受欢迎程度。
四、索引详解
索引使用的是否恰当直接影响到了MySQL性能,所以对索引有一定认识是非常重要的。什么是索引?为什么要建立索引?索引用于快速找出在某個列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。例如:有一张person表,其中有2万条记录,记录着2万个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为止。如果有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2万条数据了。其中MySQL中的索引的存储类型有两种:BTREE、HASH。也就是用树或者Hash值来存储该字段,索引的工作原理要理解MySQL中索引的工作原理,最简单的方法就是去看一看一本书的索引部分:比如你想在一本书中寻找某个主题,一般会先看书的索引目录,找到对应的章节、对应的页码后就可以快速找到你想看的内容。在MySQL中,存储引擎用类似的方法使用索引,其先在索引中查找对应的值,然后根据匹配的索引记录找到对应的数据行,最后将数据结果集返回给客户端。因此使用索引的优点是所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段设置索引、大大加快数据的查询速度。但缺点是创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加,索引也需要占空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值,当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。所以应遵守一定的使用原则比如通过上面说的优点和缺点,我们应该可以知道,并不是每个字段度设置索引就好,也不是索引越多越好,而是需要自己合理的使用,对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引,数据量小的表最好不要使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果,在一同值少的列上(字段上)不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可以建立索引。索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引,MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换MEMORY/HEAP存储引擎:支持HASH和BTREE索引,索引我们分为四类来讲有单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引。
五、总结
数据库设计的质量会直接影响到软件开发的进度和质量,由上述总结出MySQL成本低、性能强,以开发文档、社区论坛、源代码为基础上做数据库开发便可满足绝大多数需求并容易对遇到的问题找到解决方案。