MYSQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下公司。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。
MYSQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
MYSQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
(RDBMS即关系数据库管理系统(RelationalDatabaseManagementSystem),是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统,常用的数据库软件有Oracle、SQLServer等。)
RDBMS的特点:1)数据以表格的形式出现;
2)每行为各种记录名称;
3)每列为记录名称所对应的数据域;
4)许多的行和列组成一张表单;
5)若干的表单组成database;
对应目前主流的LAMP(Linux+Apache+Mysql+PHP)架构来说,Mysql更是得到各位IT运维、DBA的青睐,目前mysql已被orcacle收购,不过好消息是原来mysql创始人已独立出来自己重新开发了一个MariaDB,而且使用的人数越来越多。而且MariaDB兼容mysql所有的功能和相关参数。
MYSQL数据库引擎详解MYSQL数据库运行在服务器前,需要选择启动的引擎,好比一辆轿车,性能好的发动机会提升轿车的性能,从而启动、运行更加的高效。同样MYSQL也有类似发动机引擎,这里称之为MYSQL引擎。
MYSQL引擎包括:ISAM、MyISAM、InnoDB、MEMORY、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、Berkeley、Merge、Federated、Cluster/NDB等,其中MyISAM、InnoDB使用最为广泛,如下为MyisamBDBMemoryInnoDBArchive引擎功能的对比:
引擎特性MyisamBDBMemoryInnoDBArchive批量插入的速度高高高中非常高集群索引不支持不支持不支持支持不支持数据缓存不支持不支持支持支持不支持索引缓存支持不支持支持支持不支持数据可压缩支持不支持不支持不支持支持硬盘空间使用低低NULL高非常低内存使用低低中等高低外键支持不支持不支持不支持支持不支持存储限制没有没有有64TB没有事务安全不支持支持不支持支持不支持锁机制表锁页锁表锁行锁行锁B树索引支持支持支持支持不支持哈希索引不支持不支持支持支持不支持全文索引支持不支持不支持不支持不支持性能总结:MyISAMMySQL5.0之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务;
MySQL是我们比较常用的一种数据库软件。它有着诸多的优点,如开源的,免费的等等。其实它还有一个很好的特点,那就是有多种引擎可以供你选择。如果赛车手能根据不同的路况,地形随手更换与之最适宜的引擎,那么他们将创造奇迹。
MyISAMMySQL5.0之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务;
InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定、支持事物、外键等功能,MySQL5.5起成为默认数据库引擎;
InnoDB事务型数据库的首选引擎,支持ACID事务,ACID包括:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在执行事务过程无法保证数据的正确性。
BDB源自BerkeleyDB,事务型数据库的另一种选择,支持Commit和Rollback等其他事务特性;
Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在MySQL重新启动时丢失;
MYSQL常用的两大引擎有MyISAM和innoDB,那他们有什么明显的区别呢,什么场合使用什么引擎呢?
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,如果执行大量的SELECT(查询)操作,MyISAM是更好的选择,支持表锁。
InnoDB提供事务支持事务,外部键等高级数据库功能,执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,支持行锁。
MYSQL数据库应用索引索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。常见索引类别如下:
1)普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
2)唯一索引
普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个"员工个人资料"数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
3)主索引
在前面已经反复多次强调过:必须为主键字段创建一个索引,这个索引就是所谓的"主索引"。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。
4)外键索引
如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。
5)复合索引
索引可以覆盖多个数据列,如像INDEX(columnA,columnB)索引。这种索引的特点是MySQL可以有选择地使用一个这样的索引。如果查询操作只需要用到columnA数据列上的一个索引,就可以使用复合索引INDEX(columnA,columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A,B,C)可以当做A或(A,B)的索引来使用,但不能当做B、C或(B,C)的索引来使用。
MYSQL数据库安装MYSQL安装方式有两种,一种是YUM/RPM安装,另外一种是源码包安装。
YUM安装方法很简单,执行命令如下即可:
CentOS6.x
[root
localhost~]#yuminstall-ymysql-servermysql-develmysqlCentOS7.x
[root
localhost~]#yuminstall-ymariadb-servermariadbmariadb-libsmariadb-devel源码安装MYSQL方式
1)下载MYSQL源码包
[root
localhost~]#yum-yinstallwgetgccgcc-c++cmakemakencurses-develperlperl-devel[root
localhost~]#wget-c北京中科白癜风医院正规的吗北京中科白癜风医院正规的吗