Mysql 笔记两则

鉴客 发布于 2010/08/24 18:16
阅读 466
收藏 5

1、BLOB字段最长只能存65535个字节。

之前一直以为BLOB字段是不限长度的,犯了经验主义的错误。直到使用中遇到了问题,一翻文档,原来最多只能存65535个字节呐。

如果想存更多,可以用MediumBLOB或是LongBLOB。当然,过多使用BLOB字段不是个好习惯。

对于TEXT类型的字段,也有一样的限制。如果想要存放更多内容,可以用MediumTEXT或LongTEXT。

2、在不同事务中Update同一条数据,mysql会保证串行执行。

即便不先使用select xxx for update锁住这条记录,mysql依然会保证不同事务中对同一行数据的update,串行地执行。举例来说,假设有两个事务T1、T2。在T1中先执行

UPDATE table_name set field_A = ‘xxx’ where id = 123

可以顺利完成。然后在T2中update同一条记录:

UPDATE table_name set field_A = ‘yyy’ where id = 123

此时就会阻塞,除非T1中做了提交(commit)或回滚(rollback),不然无法执行完成,有可能超时返回。也就是说,mysql为事务中的update操作自动加了锁。

这个特性有什么用?可以在update时,安全地使用 A=A+1 之类的赋值语句,而不必担心没有先锁定记录而将数据改脏。

推而广之,其他数据库会怎么做呢?若有兴趣,可以装一个PGSQL尝试下。

感觉开发中遇到的很多问题,想明白了都很简单。但只有动手试试、查查资料,才能真正验证想法。

加载中
0
HostSugar
HostSugar

恩,关注一下,记住

返回顶部
顶部