设为首页 加入收藏

TOP

Mysql原理,命令,及技巧总结(一)
2014-11-24 03:18:41 来源: 作者: 【 】 浏览:12
Tags:Mysql 原理 命令 技巧 总结
Mysql原理,命令,及技巧总结
什么是MySql数据库
MySql数据库是开放源代码的关系型数据库。目前,它可以提供的功能有:支持sql语言、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。同Oracle 和SQL Server等大型数据库系统一样,MySql也是客户/服务器系统并且是单进程多线程架构的数据库。并且MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL的客户机/服务器结构由一个服务器守护程序mysql和很多不同的客户程序和库组成。由于其 源码的开放性及稳定性,且与网站流行编 语言PHP的完美结合,现在很多站点都利用其当作后端 数据库,使其获得了广泛应用。MySql区别于其它数据库系统的一个重要特点是支持插入式存储引擎。
那么什么是存储引擎呢?
存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。
MySql中有哪些存储引擎?
1. MyISAM:这种引擎是MySql最早提供的, 这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种:
静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的,服务器将自动选择这种表类型。因为数据表中每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。当数据受损时,恢复工作也比较容易做。
动态MyISAM:如果数据表中出现varchar、xxxtext或xxxBLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进而导致执行效率下降。同时,内存中也可能会出现很多碎片。因此,这种类型的表要经常用optimize table命令或优化工具来进行碎片整理。
压缩MyISAM:以上说到的两种类型的表都可以用myisamchk工具压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。另外,因为是压缩数据,所以这种表在读取的时候要先时行解压缩。
但是,不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。
2 MyISAM Merge引擎:这种类型是MyISAM类型的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表。常应用于日志和数据仓库。
3 InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能。
4 memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。
5 archive:这种类型只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。
当然MySql支持的表类型不止上面几种。 下面介绍如何查看和设置数据表类型。
MySql中关于存储引擎的操作:
1查看数据库可以支持的存储引擎:show engines,默认数据表类型是MyISAM。当然,我们可以通过修改数据库配置文件中的选项,设定默认表类型。
2.通过显示表的创建语句可以查看该表的Engine, Showcreate table tablename;
3 设置或修改表的存储引擎,在创建表的语句上加上engine=engineName即可,如:
[sql]
create table user(
id intnot null auto_increment,
usernamechar(20) not null,
sexchar(2),
primarykey(id)
) engine=merge
而修改存储引擎,使用alter命令,很容易想到,因为Engine是在创建表的时候定好的,顾使用alter来修改,可以用命令Altertable tableName engine =engineName
假如,若需要将表user的存储问引擎修改为archive类型,则可使用命令alter table userengine=archive。
聚集索引
聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。
聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行 的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节 省成本。 当索引值唯一时,使用聚集索引查找特定的行也很有效率。例如,使用唯一雇员 ID 列 emp_id 查找特定雇员的最快速的方法,是在 emp_id 列上创建聚集索引或 PRIMARY KEY 约束
My SQL常用目录及系统命令
1、数据库默认目录 /var/lib/mysql/,为啥放在这个地方?一般var下面是最大的目录,数据文件也存储在这个地方,如果要想修改数据文件目录,要配置文件进行修改,有几个地方要进行修改 (1)在配置文件中mysql.sock文件产生的位置,mysql.sock文件的产生位置,如socket = /home/data/mysql/mysql.sock (2)修改mysql的启动脚本中的datadir:init.d/myql:datadir=/home/data/mysql需要注意的有要将默认路径下的data文件copy到新目录而不是新建,还有要将Mysql的一份配置文件copy到/etc/下面,对sock位置的修改要在改文件下修改,最后在修改前停止mysql, 修改完进行生效重启Mysql.
2、配置文件 /usr/share/mysql(mysql.server命令及配置文件),如/usr/share/mysql/my-medium.cnf
3、相关命令 /usr/bin(mysqladminmysqldump等命令) 命令在/usr/bin下
4、启动脚本 /etc/rc.d/init.d/mysql(启动脚本文件mysql的目录)
5、自动启动:只要记住关于自动启动的都在/sbin/chkconfig就可以了
   1)察看mysq
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇搞定MySQL数据库中文模糊检索问题 下一篇MySQL数据库的其它安全问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)