MySQL 5.6 从零开始

mysql 的特点:稳定,可靠快速,管理方便以及支持众多系统平台,所以称为世界范围内最流行的开源数据库之一。


mysql 是一个开源的数据库管理系统。由MySQL AB公司开发,发布并支持的。MySQL 是一个跨平台的开源关系型数据库管理系统,广泛的应用在Internet 上的中小型网站开发中。


数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。


数据库发展阶段:人工管理阶段,文件系统阶段,数据库系统阶段,高级数据库阶段。


种类大概3种:层次式数据库,网络式数据库,关系型数据库。


表:在关系数据库中,数据库表式一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成,行被称为记录,是组织数据的单位。列被称为字段,每一列表示记录的一个属性,都有相应的描述信息,如数据类型,数据宽度等。


数据类型:决定了数据在计算机中存储格式,代表不同的信息类型,常用的数据类型:整数型,浮点型,精确小数型,二进制型,日期/时间型,字符串型。


主键:主码,用于唯一的标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值。出现相同的值,则提示错误。


数据库技术构成:数据库系统由硬件和软件部分共同构成,硬件主要用于存储数据库中的数据,包括计算机,存储设备等。软件包括:DBMS,支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术等。


数据库系统有3个主要的组成部分:
1.数据库:用于存储数据的地方。
2.数据库管理系统:用于管理数据库的软件。
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。


数据库提供了一个存储空间用以存储各种数据,可以将数据库视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。


数据库管理系统是用户创建,管理,维护数据库时所使用的软件,位于用户与操作系统之间,对数据库进行统一管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性,完整性和可靠性。


SQL语言包含的四种语言部分:


数据定义语言DDL:drop,create,alter
数据操作语言DML:insert,update,delete
数据查询语言:select


数据控制语言:grant,revoke,commit,rollback


数据库访问接口:不同的程序设计语言会有各自不同的数据访问接口,程序语言通过这些接口执行SQL语句,进行数据库管理。


主要的数据库访问接口有:
ODBC:开放数据库互联技术为访问不同的SQL数据库提供了一个共同的接口。ODBC使用SQL作为访问数据的标准。这一接口提供了最大限度的互操作性:一个应用程序可以通过共同的一组代码访问不同的SQL数据库管理系统。


一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。MySQL,Oracle都可以用ODBC API进行访问,ODBC的最大优点是能以统一的 方式处理所有的数据库。


JDBC:Java数据库连接,用于Java应用程序连接数据库的标准方法,是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。


ADO.NET:微软在.net框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET提供了对关系数据,XML和应用程序数据的访问,允许和不同类型的数据源以及数据库进行交互。


PDO:为PHP访问数据库定义了一个轻量级,一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,PDO是PHP5新加入的一个重大功能。


MySQL :是一个小型关系型数据库管理系统,与其他大型数据库管理系统Oracle,DB2,SQL server相比,MySQL 规模小,功能有限,但是体积小,速度快,成本低,且它提供的功能对稍微复杂的应用来说已经够用。


MySQL 版本:


MySQL community server社区版:该版本完全免费,但是官方不提供技术支持。


MySQL enterprise server企业版服务器:它能够以很高性价比为企业提供数据仓库应用,支持acid 事务处理,提供完整的提交,回滚,崩溃回复和行级锁定功能。但是该版本需要付费使用,官方提供电话技术支持。


MYSQL的优势


速度:运行速度快
价格:MySQL 对多数个人用户来说时免费的
容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习
可移植性:能够工作再众多不同的系统平台上:windows,linux,unix,mac os等
丰富的接口:提供了用于c,c++,java,perl,php,python,ruby 等语言的api.
支持查询语言:MySQL可以利用标准sql语法,支持odbc的应用程序
安全性和连结性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输都采用加密形式,从而保证了密码安全。并且由于MySQL是网络化的,因此可以再因特网上的任何地方访问,提高了数据共享的效率。


mysql 提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在mysql中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。MySQL5.6支持的存储引擎有:csv,performance_schema,Memory,MyISAM,mrg_myisam,InnoDB 等,使用show engines 查看系统所支持的引擎类型。


MySQL5.6的新功能


1.子查询最佳化:通过优化子查询,可以提高执行效率,主要表现在查询的结果集合,分类和返回的执行次数上。
2.强化功能:运用EXPLAIN执行insert,update,delete ,explain 以json 格式输出,提供更精确的最佳化指标和绝佳的可读性,optimizer traces 功能更可追踪最佳化决策过程。
3.通过强化innodb 存储引擎,提升效能处理量和应用软件的可能性:提升处理和只读量高达230%,innodb重构得以尽量减少传统执行绪,冲洗和净化互斥的冲突和瓶颈,在高负载的OLTP系统展现更优异的数据同步性,显著提升只读和交易工作负载的处理量。
4.大幅提升可用性:数据库管理员运用在线数据定义语言作业,可执行新增索引和窗体变更功能,并同时更新应用程序。
5.新增icp 和BKA功能,提升特定查询量高达280倍。
6.InnoDB全文检索功能:开发人员可以在InnoDB窗体上建立全文索引功能,以呈现文字搜寻结果,加快搜寻单字和语句。
7.自我修复复制丛集:新增的Global Transaction Identifiers and utilities 简化自动侦测和复原功能。当数据库发生损毁时,数据库管理员无须介入,即可运用Crash-Safe Replication 功能,自动将二进制记录和备份数据恢复到正确位置。Checksums 可透过自动侦测和警示错误的功能,跨丛集保持数据的完整性。
8.时间延迟复制:防止主计算机的作业失误,例如意外删除窗体。


InnoDB存储引擎:


innodb 事务型数据库的首选引擎,支持事务安全表ACID,支持行锁定和外键。MYSQL5.5之后,innodb作为默认存储引擎,其特性有:
1.innodb给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全存储引擎。innodb锁定在行级并且也在select语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由的将InnoDB类型的表与其他MYSQL的表的类型混合起来,甚至在同一个查询中也可以混合。


2.InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的。


3.InnoDB存储引擎完全与mysql 服务器整合,innoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件。这与MYISAM不同。


使用主键约束:主键,主码。使表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一的标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。


show tables


4.InnoDB 支持外键完整性约束:存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时定义时指定主键,InnoDB 会为每一行生成一个6字节的ROWID ,并以此作为主键。


5.InnoDB 被用在众多需要高性能的大型数据库站点上。


MyISAM 存储引擎:MyISAM基于ISAM存储引擎,并对其进行扩展。它是在web,数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入,查询速度,但不支持事务。




MyISAM特点:
1.大文件在支持大文件的文件系统和操作系统上被支持。
2.当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块来自动完成。
3.每一个MyISAM 表最大索引数是64,这可以通过从新编译来改变。每个索引最大的列数是16个。
4.最大的键长度是1000字节,这也可以通过编译来改变。对于键长度超过250字节的情况,一个超过1024字节的键将被用上。
5.BOLB和TEXT列可以被索引。
6.Null值被允许在索引的列中。这个值占每个键的0-1个字节。
7.所有数字键值以高字节优先被存储以允许一个更高的索引压缩。


InnoDB与MyISAM 的比较:
如果要提供提交,回滚和崩溃恢复能力的事务安全(ACID)能力,并要求实现并发控制,InnoDB是个很好的选择。如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高 的处理效率;如果知识临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。如果只有Insert,select 操作,可以选择Archive 引擎,Archive 存储引擎支持高并发的插入操作,但是本身并不适合事务安全的。Archive 存储引擎非常适合存储归档数据,如记录日志信息可以使用Archive 引擎。


一个数据库中多个表可以使用不同的引擎,使用合适的存储引擎,将会提高整个数据库的性能。


Memory 存储引擎:Memory存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。


Memory特点:


1.Memory表的每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度。
2.Memory存储引擎执行Hash 和btree 索引。
3.可以在一个Memory表中有非唯一键
4.Memory表使用一个固定的记录长度格式。
5.Memory不支持BLOB OR TEXT列。
6.Memory支持auto_increment列和对可包含null 值的列的索引。
7.Memory表在素有客户端之间共享
8.Memory表内容被存在内存中,内存是Memory表和服务器在查询处理时的空闲中,创建的内部表共享。
9.当不再需要Memory表的内容时,要释放被Memory表使用 的内存,应该执行delete from 或者truncate table 或者删除整个表:drop table.


猜你喜欢

转载自blog.csdn.net/qq_35781178/article/details/80702545