MySQLµÄLOCK TABLES/UNLOCK TABLES
LOCK TABLES/UNLOCK TABLES ¾ä·¨
LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
[, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} ...]
...
UNLOCK TABLES
LOCK TABLES Ϊµ±Ç°Ïß³ÌËø¶¨±í¡£UNLOCK TABLES Êͷŵ±Ç°Ïß³ÌÓµÓеÄËùÓÐËø¶¨¡£µ±Ï̷߳¢³öÁíÒ»¸ö LOCK TABLES£¬»òµ±Óë·þÎñÆ÷µÄÁ¬½Ó±»¹Ø±Õʱ£¬±»µ±Ç°Ïß³ÌËø¶¨µÄËùÓÐ±í½«±»×Ô¶¯µØ½âËø¡£
ΪÁËÔÚ MySQL 4.0.2 ʹÓà LOCK TABLES £¬Äã±ØÐëÓµÓÐÒ»¸öÈ«¾ÖµÄ LOCK TABLES ȨÏÞºÍÒ»¸öÔÚÏà¹Ø±íÉ쵀 SELECT ȨÏÞ¡£ÔÚ MySQL 3.23 ÖУ¬Äã¶Ô¸Ã±íÐèÒªÓÐ SELECT¡¢insert¡¢DELETE ºÍ UPDATE ȨÏÞ¡£
ʹÓà LOCK TABLES µÄÖ÷ÒªÔÒòÊÇ£¬·ÂЧÊÂÎñ´¦Àí»òÔÚ¸üбíʱµÃµ½¸ü¿ìµÄËÙ¶È¡£´Ëºó»áÓиüÏêϸµÄÃèÊö¡£
Èç¹ûÒ»¸öÏß³ÌÔÚÒ»¸ö±íÉϵõ½Ò»¸ö READ Ëø£¬¸ÃÏß³Ì (ºÍËùÓÐÆäËüÏß³Ì) Ö»ÄÜ´Ó±íÖжÁÈ¡¡£Èç¹ûÒ»¸öÏß³ÌÔÚÒ»¸ö±íÉϵõ½Ò»¸ö WRITE Ëø£¬ÄÇôֻÓÐÓµÓÐÕâ¸öËøµÄÏ߳̿ÉÒÔ´Ó±íÖжÁÈ¡ºÍд±í¡£ÆäËüµÄÏ̱߳»×èÈû¡£
READ LOCAL ºÍ READ Ö®¼äµÄ²»Í¬¾ÍÔÚÓÚ£¬µ±Ëø±»¼ÓÔØÊ±£¬READ LOCAL ÔÊÐí·Ç³åÍ»(non-conflicting) INSERT Óï¾äÖ´ÐС£Èç¹ûµ±Äã¼ÓÔØ×ÅËøÊ±´Ó MySQL Íⲿ²Ù×÷Êý¾Ý¿âÎļþ£¬Õ⽫ÈÔ²»Äܱ»Ê¹Óá£
µ±ÄãʹÓà LOCK TABLES Êǵأ¬Äã±ØÐëËø¶¨ËùÓÐÄ㽫ʹÓÃµÄ±í£¬²¢ÇÒ±ØÐëʹÓÃÓëÄãµÄ²éѯÖн«Ê¹ÓõıðÃûÏàͬ£¡Èç¹ûÄãÔÚÒ»¸ö²éѯÖжà´ÎʹÓÃÒ»¸ö±í(ÓñðÃû)£¬Äã±ØÐëΪÿһ¸ö±ðÃû»ñµÃÒ»¸öËø¡£
WRITE ËøÍ¨¹ý±È READ ËøÓиü¸ßµÄȨÏÞ£¬ÒÔÈ·±£¸üб»¾¡¿ìµØ´¦Àí¡£Õâ¾ÍÒâζ×Å£¬Èç¹ûÒ»¸öÏ̻߳ñµÃÒ»¸ö READ Ëø£¬¶øÍ¬Ê±ÁíÍâÒ»¸öÏß³ÌÇëÇóÒ»¸ö WRITE Ëø£¬²¢·¢µÄ READ ËøÇëÇ󽫵ȴýÖ±µ½ WRITE Ï̵߳õ½ÁËËø²¢ÊÍ·ÅÁËËü¡£Äã¿ÉÒÔʹÓà LOW_PRIORITY WRITE Ëø£¬µ±¸ÃÏß³ÌÔڵȴý WRITE ËøÊ±£¬Ëü½«ÔÊÐíÆäËüµÄÏ̻߳ñµÃ READ Ëø¡£ ÄãÓ¦¸ÃֻʹÓà LOW_PRIORITY WRITE Ëø£¬Èç¹ûÄãÈ·ÐÅÕ⽫ÊÇ×îºóÒ»´Î£¬µ±Ã»ÓÐÏ߳̽«ÓµÓÐ READ Ëø¡£
LOCK TABLES ¹¤×÷ÈçÏ£º
ÒÔÄÚ²¿¶¨ÒåµÄ´ÎÐòÅÅÐòËùÓб»Ëø¶¨µÄ±í (´ÓÓû§Á¢³¡Ëµ£¬¸Ã´ÎÐòÊDz»Ã÷È·µÄ)¡£
Èç¹ûÒ»¸ö±í±»ÒÔÒ»¸ö¶ÁËøºÍÒ»¸öÐ´ËøËø¶¨£¬½«Ð´Ëø·ÅÔÚ¶ÁËøÖ®Ç°¡£
Ò»´ÎÖ»Ëø¶¨Ò»¸ö±í£¬Ö»µ½Ï̵߳õ½ËùÓеÄËø¶¨¡£
Õâ¸ö·½°¸ÊÇΪÁËÈ·±££¬±íËø¶¨ËÀËøÊÍ·Å¡£ ¶ÔÓÚÕâ¸öģʽÄãÈÔÈ»ÓÐЩÆäËüÊÂÇéÐèÒªÖªµÀ£º
Èç¹ûÄã¶ÔÒ»¸ö±íʹÓÃÒ»¸ö LOW_PRIORITY WRITE Ëø¶¨£¬Õâ¾ÍÒâζ×Å£¬MySQL ½«µÈ´ýÕâ¸öËø£¬Ö±µ½Ã»ÓÐÏß³ÌÇëÇóÒ»¸ö READ Ëø¡£µ±Ï̵߳õ½ÁË WRITE Ëø£¬²¢µÈ´ý»ñµÃËø¶¨±íÁбíÖеÄÏÂÒ»¸ö
Ïà¹ØÎĵµ£º
Ò») Á¬½ÓMYSQL£º
¸ñʽ£º mysql -hÖ÷»úµØÖ· -uÓû§Ãû £pÓû§ÃÜÂë
1¡¢Àý1£ºÁ¬½Óµ½±¾»úÉϵÄMYSQL
Ê×ÏÈÔÚ´ò¿ªDOS´°¿Ú£¬È»ºó½øÈëmysql°²×°Ä¿Â¼ÏµÄbinĿ¼Ï£¬ÀýÈ磺 D:\mysql\bin£¬ÔÙ¼üÈëÃüÁîmysql -uroot -p£¬»Ø³µºóÌáʾÄãÊäÃÜÂë
£¬Èç¹û¸Õ°²×°ºÃMYSQL£¬³¬¼¶Óû§rootÊÇûÓÐÃÜÂëµÄ£¬¹ÊÖ±½Ó»Ø³ ......
ÏÖÔÚÔÚWEB Ó¦ÓÃÖÐʹÓ÷ÖÒ³¼¼ÊõÔ½À´Ô½ÆÕ±éÁË£¬ÆäÖÐÀûÓÃÊý¾Ý¿â²éѯ·ÖÒ³ÊÇÒ»ÖÖЧÂʱȽϸߵķ½·¨£¬
ÏÂÃæÁгöÁËOracle, DB2 ¼° MySQL ·ÖÒ³²éѯд·¨¡£
Ò»£ºOracle
select * from (select rownum,name from table where rownum <=endIndex )
where rownum > startIndex
¶þ£ºDB2
DB2·ÖÒ³²éѯ
SELECT * ......
ÒÑÖªµ±Ç°¼Ç¼idΪ$id,È¡³öµ±Ç°¼Ç¼µÄÉÏÒ»Ìõ¼Ç¼ºÍÏÂÒ»Ìõ¼Ç¼µÄid,title×ֶΡ£±íÃûnews¡£
$sql = "SELECT CASE WHEN SIGN(id - $id) > 0 THEN MIN(id) WHEN SIGN(id - $id) < 0 THEN MAX(id) END AS id,title from news WHERE id <> $id GROUP BY SIGN(id - $id) ORDER BY SIGN(id - $id)"; ......
Èç¹ûÄãÊǸöÈü³µÊÖ£¬²¢ÇÒ°´Ò»Ï°´Å¥¾ÍÄܹ»Á¢¼´¸ü»»ÒýÇæ¶ø²»ÐèÒª°Ñ³µ¿ªµ½³µ¿âÀïÈ¥»»£¬ÄÇ»áÊÇʲô¸Ð¾õÄØ£¿MySQLÊý¾Ý¿âΪ¿ª·¢ÈËÔ±Ëù×öµÄ¾ÍºÃÏñÊǰ´°´Å¥»»ÒýÇæ£»ËüÈÃÄãÑ¡ÔñÊý¾Ý¿âÒýÇæ£¬²¢¸øÄãÒ»Ìõ¼òµ¥µÄ;¾¶À´Çл»Ëü¡£
MySQLµÄ×Ô´øÒýÇæ¿Ï¶¨Êǹ»ÓÃÁË£¬µ«ÊÇÔÚÓÐЩÇé¿öÏ£¬ÆäËûµÄÒýÇæ¿ÉÄÜÒª±ÈÊÖÍ·ËùÓøüÊʺÏÍê³ÉÈÎÎñ¡£Èç¹ûÔ¸ ......
ÔÚmysqlÊÖ²áÀïÃæÓÐÒ»¶ÎÃèÊö¹ØÓÚlock tablesµÄÓï·¨µÄ.
LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...UNLOCK TABLESREAD
µ±±í²»´æÔÚ WRITE Ð´ËøÊ± READ ¶ÁËø±»Ö´ÐÐ,Õâ¸Ã״̬ÏÂ,µ±Ç°Ïß³Ì ......