½ñÌì¶Áµ½
When should you store serialized objects in the database?
£¬
ÆäÖÐÕë¶Ô
FriendFeedʹÓÃMysqlÀ´´æ´¢
×÷ΪÒýÌ⣬
½¨ÒéÔÚ¿¼ÂÇ´Ë·½°¸Ê±Ò»¶¨ÒªÈý˼¡£ÎªÊ²Ã´£¿²Î¿¼ÕâÀï
Kiss KISS KISS
. Æäʵ
Schema-LessûÓÐ´í£¬µ«²»ÄÜʲô³¡¾°¶¼ÉÏ´Ë·½°¸£¬Òª
·ÖÎöÀû±×£¬¼õÉÙ²»±ØÒªµÄÓ¦Óò㸴ÔÓ¶È¡£
ÎÄÖÐÌáµ½µÄSerialized objectsµÄ±£´æ¼¼Êõ£¬¾ÍÊÇ(entity-attribute-value) EAV, ˵һÏÂ×ܽáµÄȱµã£º
1.Ëü¶ÔËÑË÷²»ÓѺ㨶¼Ñ¹Ëõ´æÔÚÒ»×Ö¶ÎÀ¿Ï¶¨²»ÄÜËÑË÷£©£¬ÕâȷʵÊÇÒ»¸öÎÊÌâ¡£FriendFeedʹÓñäÏàindex£¬½â¾öÁËËüÐèÒª½â¾öµÄÎÊÌâ¡£µ«Ö»ÄÜÊǹæ±Ü¡£
2.Select¾«È·Ñ¡Ôñ×Ö¶ÎÊDz»³ÉÁË£¬Ã¿´Î¶¼ÊÇSELECT * from xx,µ±È»Ê¹ÓÃMemcache¿ÉÒÔºÜÉٵĽâ¾ö´ËÎÊÌâ¡£
3.²»
ÄܼÓÔ¼Êø(constraints)£¬Ó¦ÓòãÐèÒª×÷УÑ飬Æäʵ¾ÍÊÇÔö¼ÓÁËÊý¾Ý²ãµÄ¸´ÔÓ¿â¡£
4.Èç¹ûʹÓÃJson£¬²»ÄÜʹÓÃNumberºÍIPµÄÔʼÐÎʽ´æ´¢£¬±ØÐëת»»³ÉString¡£ÕâµãºÃÏñ²»ÊÇÄÇÃ´ÖØÒª£¬ÒòΪÎÒÃÇ¿ÉÒÔʹÓõÄÎı¾ÐÒéÓкܶࡣ±ÈÈçGoogleµÄ
protobuf
Æäʵ×îÖØÒªµÄÔÔòÔÚKiss KISS KISS
ÖÐÒѾ˵µÄºÜÇå³þ¡£¶ÔÓÚ¸Õ¿ªÊ¼µÄÓ¦Óã¬Ê¹ÓÃMaster-slaver×ãÒÔ¡£²»ÒªÊ¹ÓÃʲô"ÓÅ»¯"£¬ÄÇЩ
Æäʵ¾ÍÊÇ"³¶µ"¡£¶ÔÓÚSc ......
ÊýÖµÀàÐÍ
¡¡¡¡MySQL µÄÊýÖµÊý¾ÝÀàÐÍ¿ÉÒÔ´óÖ»®·ÖΪÁ½¸öÀà±ð£¬Ò»¸öÊÇÕûÊý£¬ÁíÒ»¸öÊǸ¡µãÊý»òСÊý¡£Ðí¶à²»Í¬µÄ×ÓÀàÐͶÔÕâЩÀà±ðÖеÄÿһ¸ö¶¼ÊÇ¿ÉÓõģ¬Ã¿¸ö×ÓÀàÐÍÖ§³Ö²»Í¬´óСµÄÊý¾Ý£¬²¢ÇÒ MySQL ÔÊÐíÎÒÃÇÖ¸¶¨ÊýÖµ×Ö¶ÎÖеÄÖµÊÇ·ñÓÐÕý¸ºÖ®·Ö»òÕßÓÃÁãÌî²¹¡£
¡¡¡¡±íÁгöÁ˸÷ÖÖÊýÖµÀàÐÍÒÔ¼°ËüÃǵÄÔÊÐí·¶Î§ºÍÕ¼ÓõÄÄÚ´æ¿Õ¼ä¡£
ÀàÐÍ
´óС
·¶Î§£¨ÓзûºÅ£©
·¶Î§£¨ÎÞ·ûºÅ£©
ÓÃ;
TINYINT
1 ×Ö½Ú
(-128£¬127)
(0£¬255)
СÕûÊýÖµ
SMALLINT
2 ×Ö½Ú
(-32 768£¬32 767)
(0£¬65 535)
´óÕûÊýÖµ
MEDIUMINT
3 ×Ö½Ú
(-8 388 608£¬8 388 607)
(0£¬16 777 215)
´óÕûÊýÖµ
INT»òINTEGER
4 ×Ö½Ú
(-2 147 483 648£¬2 147 483 647)
(0£¬4 294 967 295)
´óÕûÊýÖµ
BIGINT
8 ×Ö½Ú
(-9 233 372 036 854 775 808£¬9 223 372 036 854 775 807)
(0£¬18 446 744 073 709 551 615)
¼«´óÕûÊýÖµ
FLOAT
4 ×Ö½Ú
(-3.402 823 466 E+38£¬1.175 494 351 E-38)£¬0£¬(1.175 494 351 E-38£¬3.402 823 466 351 E+38)
0£¬(1.175 494 351 E-38£¬3.402 823 466 E+38)
µ¥¾«¶È
¸¡µãÊýÖµ
DOUBLE
8 ×Ö½Ú
(1.797 693 134 862 315 7 E+308£¬2.225 073 858 507 201 4 E-308)£¬0£¬(2.225 073 8 ......
gcc Ç¿´óµÄ±àÒëÆ÷¾Í²»×÷½éÉÜÁË
linuxÏÂÓÃgccÃüÁî±àÒë¶àÏß³ÌC³ÌÐòÎļþºÍº¬ÓÐMySqlÊý¾Ý¿â²Ù×÷Îļþ
1.±àÒë¶àÏß³ÌÎļþ
gcc -o mylti_thread.o multi_thread.c -lpthread
ÆäÖеÄmulti_thread.c±íʾԴÎļþ£¬mylti_thread.o±íʾ±àÒë²úÉúµÄÄ¿±êÎļþ£¬-lpthread±íʾÒýÈë¶àÏ߳̿⣬ÔÚ¡¶Using the GNU Compiler Collection¡·gcc 4.30 ÖйØÓÚ-lpthreadµÄÃèÊöÈçÏ£º
-lpthread Add support for multithreading using the POSIX threads library. This option sets flags for both the preprocessor and linker. It does not affect the thread safety of object code produced by the compiler or that of libraries supplied with it. These are HP-UX specific flags. Òª²»È»»á³öÏÖÀàËÆÒÔÏ´íÎó
/tmp/cc20DpmC.o: In function `main':
multi_thread.c:(.text+0x78): undefined reference to `pthread_create'
multi_thread.c:(.text+0xe2): undefined reference to `pthread_create'
multi_thread.c:(.text+0xf6): undefined reference to `pthread_join'
multi_thread.c:(.text+0x10a): undefined reference to `pthread_join'
2.±àÒëMySqlÊý¾ ......
MySQL°²×°Ä¿Â¼ÏµÄDataĿ¼ÖÐ .err´íÎóÐÅÏ¢:
Default storage engine (InnoDB) is not available
½â¾ö°ì·¨:
ɾ³ýÔÚMySQL°²×°Ä¿Â¼ÏµÄDataĿ¼ÖеÄ
ib_logfile0
ib_logfile1
ÖØÐÂÆô¶¯MySQLµÄService ......
ÔÎĵØÖ·£ºhttp://blog.csdn.net/wenjava/archive/2009/06/11/4261299.aspx
ÔÚʹÓÃMySQL֮ǰ£¬ÐèÒª½¨Á¢Êý¾Ý¿âµÄ»·¾³À´´´½¨Êý¾Ý±í£¬Ê×ÏÈÎÒÃÇÐèÒª°²×°¸ÃÊý¾Ý¿â»·¾³£¬¼´MySQL¡£
1¡¢ÏÂÔØMySQL
MySQLµÄ¹Ù·½ÍøÕ¾ÊÇhttp://www.mysql.org/£¬Èçͼ2-9Ëùʾ£º
ͼ2-9 MySQL¹Ù·½ÍøÕ¾
µ±Ç°Îȶ¨°æ±¾Îª5.1£¬ÎÒÃÇÑ¡ÓÃMySQL 5.1.22×÷ΪÊý¾Ý¿â·þÎñÆ÷£¬µ½Æä¹Ù·½ÍøÕ¾http://dev.mysql. com/downloads/mysql/5.1.html½øÐÐÏÂÔØ£¬ÏÂÔØºóµÄÎļþΪmysql-noinstall-5.1.22-rc-win32.zip¡£¸Ã°æ±¾ÊǸöÂÌÉ«Èí¼þ£¬½âѹËõ¼´¿ÉʹÓá£
2£®°²×°MySQL
ÎÒÃǽ«mysql-noinstall-5.1.22-rc-win32.zipÎļþ½âѹµ½DÅ̸ùĿ¼ÖУ¬²¢Ð޸ĽâѹºóµÄ¸ùĿ¼ÃûΪmysql£¬ÕâÑù×öÊÇΪÁËĿ¼Ãû¼òµ¥Ò»Ð©£¬·½±ãÎÒÃÇʹÓ᣽âѹºóµÄĿ¼½á¹¹Èçͼ2-10Ëùʾ¡£
ͼ2-10 MySQL½âѹºóĿ¼
¸Ã¸ùĿ¼Ï°üº¬ÒÔϼ¸¸ö×î³£ÓõÄ×ÓĿ¼¡£
binĿ¼£º¸ÃĿ¼°üº¬ÁËMySQLµÄÆô¶¯¡¢Í£Ö¹µÈ¸÷ÖÖ²Ù×÷ÃüÁîÎļþ£¬ÎÒÃÇҲҪʹÓÃÕâÏÂÃæµÄÃüÁîÎļþÀ´Æô¶¯ºÍ¹ÜÀíMySQL¡£
dataĿ¼£º¸ÃĿ¼ÊÇMySQLµÄÊý¾Ý¿â´æ·ÅĿ¼¡£ÔÚ¸ÃĿ¼Ï£¬Ã¿Ò»¸ö×ÓĿ¼¶ÔÓ¦Ò»¸öÊý¾Ý¿â¡£Ä¬ÈÏʱ°üº¬Á½¸öÊý¾Ý¿â£¬¼´mysqlºÍtest¡£ÔÚ¸ÃdataĿ¼ÏÂÖ±½Óн¨Ò»¸öĿ¼£¬¼´±íʾн¨ ......
Using filesort±íʾÔÚË÷ÒýÖ®Í⣬ÐèÒª¶îÍâ½øÐÐÍⲿµÄÅÅÐò¶¯×÷¡£µ¼Ö¸ÃÎÊÌâµÄÔÒòÒ»°ãºÍorder byÓÐÕßÖ±½Ó¹ØÏµ£¬Ò»°ã¿ÉÒÔͨ¹ýºÏÊʵÄË÷ÒýÀ´¼õÉÙ»òÕß±ÜÃâ¡£
explain SELECT * from table_item WHERE user_id = 2 ORDER BY item_id LIMIT 0, 5
user_id ºÍ item_id ·Ö±ð½¨Á¢Ò»¸öË÷Òý£¬¶Ô´ËÓï¾äMySQLÑ¡ÔñÁË user_idË÷Òý£¬ÄÇô item_id µÄË÷ÒýûÓÐÆðµ½ÈκÎÓô¦¡£µ±ÅÅÐòʱ¼Ç¼Êý½Ï¶à£¬ÄÚ´æÖеÄÅÅÐò bufferÂúÁË£¬Ö»ÄÜ Using filesort ½øÐÐÍⲿÅÅÐò¡£
½â¾ö·½Ê½Îª¶ÔÕâÁ½Áн¨Á¢×éºÏË÷Òý¡£
explain SELECT * from table_item WHERE user_id = 2 and user_age > 20 ORDER BY item_id LIMIT 0, 5
½¨Á¢×éºÏË÷Òý£¨user_id, user_age, item_id£©£¬¿´ËƷdz£ÍêÃÀ¡£µ«ÓÉÓÚuser_age¹æÔò²»ÊÇÈ·¶¨Öµ£¬Ê¹ÓøÃ×éºÏË÷ÒýµÄ»°Êµ¼ÊÉÏÐèÒªÏȰ´Ë÷ÒýÕÒ³öÒ»¸ö¸öuser_ageÏµĶ«Î÷ºóÔÙ¶ÔÆä½øÐÐÅÅÐò£¬ÈÔÈ»»áfilesort¡£
½â¾ö·½Ê½ÊÇʹÓÃ×éºÏË÷Òý£¨user_id, item_id£©£¬¶ÔÅÅÐòºÃµÄitem_idÔÙ¹ýÂ˵½²»Âú×ãuser_age > 20µÄÌõÄ¿£¬²»»á³öÏÖfilesort¡£
explain SELECT * from table_item WHERE user_id = 2 ORDER BY item_attr desc, item_id LIMIT 0, 5
½¨Á¢ÁË×éºÏË÷Òý£¨user_id, item_attr, item_id)£¬ÒòΪitem ......