Loading...

    AD: 猛买网,精彩团购 | Jobsdigg | 很棒的男装店 | 网站地图

Mysql笔记两则

可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息
原文地址:http://www.blogkid.net/archives/2650.html

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 Responses to “Mysql笔记两则”


  1. No Comments

Leave a Reply