mysql -- 开发

1. 常用的存储引擎的选择

a)四种mysql常用的存储引擎:

MyISAM: 默认的mysql插件式存储引擎。如果应用是以读和插入操作为主,只有很少的更新、删除操作,并且对事务的完整性、并发性要求不是很高,则非常合适。适用于web和数据仓储应用。

InonoDB: 用于事务处理应用程序,支持外键。支持对事务的完整性有较高要求,在并发条件下要求数据的一致性,且包含较多的修改、删除操作。适用于计费或者财务系统这些对数据准确性要求较高的系统。

MEMORY:将数据保存在RAM中,在需要快速定位记录和其它类似数据的环境下,可提供极高的访问速度。缺点在于对表的大小有限制,且要确保在数据库异常终止的情况下表的数据是可以恢复的。适用于更新不太频繁的小表。

MERGE:用于将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用。突破了单个MyISAM表大小的限制。

b)在对应的数据库目录下存放的几个文件说明:

.frm(存储表定义)

MYD(存储数据)

MYI(存储索引)

c)常用命令:

设置引擎:engine = enginename

查看引擎:show table status like 'tablename' /G;

2. 选择合适的数据类型

a)char和varchar

char定长,处理速度要快于varchar,但缺点是浪费存储空间,程序需要对行尾空格进行处理。

MyISAM:建议使用char。

MEMORY: 无能采用何种形式的存储,最终都被作为char来处理。

InnoDB:对于其中的表,内部的行存储格式没有区分固定长度和可变长度列(其内部数据行都是用指向数据列值的头指针),因此,在本质上,主要性能因素是数据行使用的存储容量。故建议使用varchar。

b)text和blob

blob能用来保存二进制数据,例如图像。

两者都会引起一些性能问题,特别是在执行大量删除操作后会在数据表中留下很大的“空洞”,会在插入数据时造成影响,故应该定期执行optimize table的磁片整理功能。

c)浮点数和定点数

定点数实际上是以字符串形式存放,可用于精确表示数据。当插入数据精度超过给定精度时,浮点数会四舍五入,而定点数则会报警或报错。

d)日期类型的选择

根据实际需要选择满足应用的最小存储的日期类型,如只需记录年,则可采用一个字节的year类型。

datetime能表示更多的日期范围。

timestamp能消除不同时区的影响。

3. 存储过程和函数

存储过程和函数是事先编译并存储在数据库中的一段sql语句的集合,调用存储过程和函数可以减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率有好处。

存储过程和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以是in、out、inout类型,而函数的参数只能是in类型。

在创建存储过程或函数之前,都会通过delimiter $$ 命令将语句结束符从“;”修改成其他符号,这样在过程和函数中的“;”就不会被解释成语句的结束符而提示错误。在存储过程或者函数创建完毕,通过“delimiter;”命令再将结束符改回成“;”。

调用存储过程可以使用call sp_name([parameter])。

变量、条件、处理程序、光标都可以通过declare定义,它们之间的先后顺序是有要求的。变量和条件必须在最前面声明,然后才能是光标的声明,最后才可以是处理程序的声明。

流程控制:

if/case/loop/leave/iterate/repeat/while

事务控制和锁定语句

a)lock tables [read/write]/unlock table

b)事务是作为单个逻辑工作单元执行的一系列操作,必须满足原子性、一致性、隔离性、持久性。

默认情况下mysql是自动提交的。

start transaction 或者 begin 语句可以开始一项新的事务。

commit和rollback用来提交和回滚事务。

chain和release用来定义再事务提交或者回滚之后的操作,chain会立即启动一个新的事务,release则会断开和客户端的连接。

set autocommit = 0,可取消自动提交的状态。

savepoint pointname:定义回滚点。

rollback to savepoint pointname:回滚至回滚点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值