08 2013 档案

摘要:前言为了保证数据的一致完整性,任何一个数据库都存在锁定机制。锁定机制的优劣直接应想到一个数据库系统的并发处理能力和性能,所以锁定机制的实现也就成为了各种数据库的核心技术之一。本章将对MySQL中两种使用最为频繁的存储引擎MyISAM和Innodb各自的锁定机制进行较为详细的分析。MySQL锁定机制简介数据库锁定机制简单来说就是数据库为了保证数据的一致性而使各种共享资源在被并发访问访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足 阅读全文
posted @ 2013-08-29 22:03 Jevo 阅读(296) 评论(0) 推荐(0)
摘要:一.MySQL逻辑架构 第一层,即最上一层,所包含的服务并不是MySQL所独有的技术。它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等。 第二层值得关注。这是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断, sql解析,行计划优化, query cache 的处理以及所有内置的函数(如日期,时间,数学运算,加密)等等。各个存储引擎提供的功能都集中在这一层,如存储过程,触发器,视 图等。 第三层包括了存储引擎。通常叫做StorEngine Layer ,也就是底层数据存取操作实现 阅读全文
posted @ 2013-08-28 21:10 Jevo
摘要:EXPLAIN语句可以用作DESCRIBE的一个同义词,或获得关于MySQL如何执行SELECT语句的信息:EXPLAIN tbl_name是DESCRIBE tbl_name或SHOW COLUMNS FROM tbl_name的一个同义词。· 如果在SELECT语句前放上关键词EXPLAIN,MySQL将解释它如何处理SELECT,提供有关表如何联接和联接的次序。 借助于EXPLAIN,可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。还可以知道优化器是否以一个最佳次序联接表。为了强制优化器让一个SELECT语句按照表命名顺序的联接次序,语句应以S 阅读全文
posted @ 2013-08-27 22:48 Jevo 阅读(803) 评论(1) 推荐(0)
摘要:MySQL Query Profiler, 可以查询到此 SQL 语句会执行多少, 并看出 CPU/Memory 使用量, 执行过程 System lock, Table lock 花多少时间等等.从启动Profile之后的所有查询包括错误语句都会被记录。mysql的sql语句优化也可以使用explain,但是执行计划是没有办法知道详细的Memory/CPU等使用量。 SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]]type: ALL | BLOCK IO | CONTEXT SW 阅读全文
posted @ 2013-08-26 19:10 Jevo 阅读(1053) 评论(0) 推荐(0)
摘要:MySQL提供标准的SQL模式匹配,SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。。关于SQL模式匹配:http://dev.mysql.com/doc/refman/5.1/zh/tutorial.html#pattern-matching1.MySQL仅仅支持多数正则表达式实现的一个很小的子集。2.SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。;而REGEXP使用扩展正则表达式匹配列值的子串,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。注意使用SQL模式时,不能使用=或!=;而应 阅读全文
posted @ 2013-08-25 19:58 Jevo 阅读(1090) 评论(0) 推荐(0)
摘要:mysql日志的种类,一般来说,日志有五种,分别为:错误日志:-log-err (记录启动,运行,停止mysql时出现的信息)二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用)查询日志:-log (记录建立的客户端连接和执行的语句)慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查询)更新日志: -log-update (二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用)官方文档:http://dev.mysql.com/doc/refman/5.1/zh/database-adm 阅读全文
posted @ 2013-08-24 19:26 Jevo 阅读(27450) 评论(0) 推荐(3)
摘要:1.通过mysqldump命令进行数据备份 mysql数据库的备份采用直接打包数据库文件夹(注:InnoDB引擎不支持直接拷贝数据文件备份数据库,由于使用InnoDB引擎的库或表是不能使用此种方式);或者使用专用的导出工具mysqldump。 通过mysqldump命令可以将指定的库、表或全部的库导出为SQL脚本。A.数据导出: 格式1:导出指定库中的部分表 • Mysqldump[选项]库名 [表名1][表名2] . .>/备份路径/备份文件名 格式2:导出一个或多个完整的库(包括其中所有的表) • Mysqldump[选项]--databases库名1[库名2]… >/备份路径 阅读全文
posted @ 2013-08-23 22:16 Jevo 阅读(700) 评论(0) 推荐(0)
摘要:MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。一、整型 整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种整数类型。MySQL数据库除了支持这两种类型外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。 各种整数类型的取值范围、存储的字节数如下:整型字节数无符号数的取值范围有符号数的取值范围TINYINT10~255128~127SMALLINT20~65535-32768~12767MEDIUMINT30~16777215-8388608~8388607INT40~4294967295-2... 阅读全文
posted @ 2013-08-23 09:01 Jevo 阅读(1010) 评论(0) 推荐(0)
摘要:MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。 字符(Character)是指人类语言中最小的表义符号。给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符'A'赋予数值0,给字符'B'赋予数值1,则0就是字符'A'的编码; 给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。例如,给定字符列表为{'A' 阅读全文
posted @ 2013-08-22 21:54 Jevo 阅读(879) 评论(0) 推荐(0)
摘要:自定义函数的格式:CREATE [DEFINER = { user | CURRENT_USER }] FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_bodyfunc_parameter: param_name typetype: Any valid MySQL data typecharacteristic: LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MO 阅读全文
posted @ 2013-08-21 22:55 Jevo 阅读(4369) 评论(0) 推荐(1)
摘要:触发器是一种特殊的存储过程,是嵌入到mysql的一段程序,它在插入,删除或修改特定表中的数据时触发执行。 数据库触发器有以下的作用:1.安全性。可以基于数据库的值使用户具有操作数据库的某种权利,允许或限制对表的修改: # 可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据。 # 可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。2.提供审计和日志记录。例:跟踪用户对数据库的操作。 # 审计用户操作数据库的语句。 # 把用户对数据库的更新写入审计表,更新日志记录。3.实现复杂的数据完整性规则 # 实现非标准的数据完整性检查和约束。触发器可产生比规则. 阅读全文
posted @ 2013-08-21 21:55 Jevo 阅读(6623) 评论(0) 推荐(0)
摘要:一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。 存储过程通常有以下优点: (1)存储过程在服务器端运行,执行速度快。 (2)存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。 (3)确保数据库的安全。使用存储过程可以完成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限。 (4) 存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算. 阅读全文
posted @ 2013-08-20 21:25 Jevo 阅读(4982) 评论(1) 推荐(1)
摘要:一、数据库操作1.创建数据库:Mysql> CREATE DATABASE databaseName;Mysql数据库的数据文件默认存放在/usr/local/mysql/var/目录下,每个数据库对应一个子目录,用于存储数据表文件;新建的空数据库在/usr/local/mysql/var/目录下会自动生成一个与新建的库名相同的空文件夹。例:mysql> create database testdb; mysql> create database if not exists testdb; mysql> create schema if not exists stude 阅读全文
posted @ 2013-08-20 09:01 Jevo 阅读(10478) 评论(0) 推荐(1)
摘要:MySQL授权系统主要通过五个表(user、db、host、tables_priv和columns_priv)来实现,其中用于访问数据库的各种用户信息都保存在mysql库的user表中。账户权限信息被存储在mysql数据库的user、db、host、tables_priv、columns_priv和procs_priv表中。 user表——该表决定是否允许用户连接到服务器。如果允许连接,权限字段则为该用户的全局权限。 db表——用于决定哪些用户可以从哪些主机访问哪些数据库。包含在db表中的权限适用于这个表标识的数据库。 host表——当您想在db表的范围之内扩展一个条目时,就会用到这个表。举例 阅读全文
posted @ 2013-08-20 09:01 Jevo 阅读(10285) 评论(0) 推荐(1)
摘要:预制语句的SQL语法基于三个SQL语句: PREPARE stmt_name FROM preparable_stmt; EXECUTE stmt_name [USING @var_name [, @var_name] ...]; {DEALLOCATE | DROP} PREPARE stmt_name;PREPARE语句用于预备一个语句,并赋予它名称stmt_name,借此在以后引用该语句。预编译SQL的存活期就是当前的会话,也就是当前的数据库连接。如果连接一断开 ,那就会消失。例:mysql> desc tb;+-------+------------------+------+- 阅读全文
posted @ 2013-08-19 12:06 Jevo 阅读(2404) 评论(0) 推荐(0)
摘要:首先,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表。 创建临时表的语法与创建表语法类似,不同之处是增加关键字TEMPORARY,如: CREATE TEMPORARY TABLE 表名 (…. ) 临时表使用有一些限制条件: * 临时表在 memory、myisam、merge或者innodb上使用,并且不支持mysql cluster簇); show tables语句不会列出临时表,在information_schema中也不存在临时表信息;show create table可以查看临时表;.. 阅读全文
posted @ 2013-08-16 17:41 Jevo 阅读(55543) 评论(1) 推荐(2)
摘要:一、数据库查询1.查看当前服务器所有的库:Mysql> SHOW DATABASES; //列出当前Mysql中包含的库,经过初始化后的MySQL服务器,默认建立了三个库:test、mysql和information_schema(其中mysql库中包含了用户认证相关的表)设置新的最大连接数为200: mysql> set GLOBAL max_connections=200显示系统中正在运行的所有进程,也就是当前正在执行的查询: mysql> show processlist大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密 阅读全文
posted @ 2013-08-15 21:21 Jevo 阅读(943) 评论(0) 推荐(0)