MySQL рдореЗрдВ рд▓рд╛рддреЗ рд╕рдордп рд░реЛ рд▓реЙрдХрд┐рдВрдЧ

рд╣рд╛рдВ, рд╣рд╛рдВ, рд╕рднреА "рдЕрд╕рд▓реА рд▓рдбрд╝рдХреЗ" рд╡реЗрдм рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдорд╛рд░рдХреАрдп рднрд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЦреИрд░, "рдиреЗрдкрддреНрд╕реНрдиреЙрдлрд╝" рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ Google рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдЗрдЯреЗрдВ рд╣реИрдВ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, "рд╡рд┐рдХрд╛рд╕ рдХреА рд╕рдорд╕реНрдпрд╛" рдореЗрдВ рди рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рдХреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрд╡рд╛ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЙрдирдХреА рд╕рдХреНрд╖рдо рдкреНрд░рддрд┐рдХреГрддрд┐ / рд╡рд┐рддрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдЕрдХреНрд╕рд░, рд╕рдорд╕реНрдпрд╛рдПрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╡рд┐рдкрд░реАрдд рд╣реИ - рдпрд╣ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓ рдХреЗ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:







рджрд┐рдП рдЧрдП:

  1. рдШрдЯрдирд╛ рдХрддрд╛рд░
  2. рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬрдВрдЬреАрд░реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  3. рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдУрдВ "рдирдИ" рдШрдЯрдирд╛рдУрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  4. рдкреНрд░реЛрд╕реЗрд╕рд░ ( рдбреЗрдорди ) рдЬреЛ рдЗрд╕ рдХрддрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╕рдм рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рдФрд░ рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ "рд╕рдВрд╕рд╛рдзрд┐рдд" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд▓реЙрдЧ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
  5. MySQL DBMS (рдЗрд╕рд▓рд┐рдП рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ)




рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ - рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ: рдЖрдИрдбреА (int), event_id (int fk), event_data (blob), execute_at (datetime), рдирд┐рд╖реНрдкрд╛рджрд┐рдд /at (рдбреЗрдЯрд╛рдЯрд╛рдЗрдо)ред рджрд╛рдирд╡ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдирд╛ рдмреБрд░рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)



рд▓реЗрдХрд┐рди рдЕрдм рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╢реАрдиреЗрдВ, рдФрд░ рдХреНрд░рдорд╢рдГ рдХрддрд╛рд░ рдореЗрдВ рдЕрдзрд┐рдХ рдиреМрдХрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "3 рд╕реЗрдХрдВрдб" рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рджрд╛рдирд╡ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдЯреВрдЯ рдЧрдпрд╛ рдФрд░ рд╡реЗ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рднреАрдЦ рдорд╛рдВрдЧрдиреЗ рд▓рдЧреЗред рд╕рдорд░реНрдерди "рдЯреЛрд░ рдФрд░ рдореЗрдЯрд▓" рдФрд░ рдЕрдВрдд рдореЗрдВ рдХрдИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред



рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрддрд╛рд░ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдмрджрд▓ рдЧрдИ рд╣реИ - рд╣рдореЗрдВ "рддрд╛рд▓реЗ" рдорд┐рд▓ рдЧрдП рд╣реИрдВред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдПрдХ рдШрдЯрдирд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдорди "рдП" рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ "рд╡реНрдпрд╕реНрдд" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рджрд╛рдирд╡ "рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ"ред рддрджрдиреБрд╕рд╛рд░, рдирдореВрдирд╛рдХрд░рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рд▓рдЧреА (рдЫрджреНрдо рдХреЛрдб):



 рдЕрдЧрд░ (рдШрдЯрдирд╛ = db.select ("рдХрддрд╛рд░ рд╕реЗ рдЖрдИрдбреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд▓реЙрдХ = 'рдЧрд▓рдд' рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ <рдЕрдм () рд▓рд┐рдорд┐рдЯ 1")) {
 db.execute ("рдЕрдкрдбреЗрдЯ рдХрддрд╛рд░ рд╕реЗрдЯ рд▓реЙрдХ = 'рд╕рддреНрдп' рдЬрд╣рд╛рдВ id =" + event.id);
 [...]
 }




рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдЕрд▓реНрдЯреНрд░рд╛-рдлреБрд▓рд╛рдпрд╛ рдорд╢реАрдиреЛрдВ рдХреЗ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдЧрд░ рд▓рдЧрднрдЧ 100 рд░рд╛рдХреНрд╖рд╕ "рдЕрдВрддрд░рд┐рдХреНрд╖" рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдереЗред рдкрд╣рд▓реА рдФрд░ рджреВрд╕рд░реА рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА рдХреЗ рдмреАрдЪ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рдХрдИ рдФрд░ рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЛ "рдкрдЪреНрдЪрд░" рджреЗрдирд╛ рдЖрд╕рд╛рди рдерд╛ рдФрд░ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдпрджрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдп рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ "рдХрд╛рд╕реНрдЯ" рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдХрддрд╛рд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП 1,000,000+ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЙрдЧ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдерд╛рди рдХреЗ 10 рд╣реЗрдХреНрдЯреЗрдпрд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЬреАрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдкреБрд░рд╛рдирд╛ рд╣реИ!



рдХрд┐рд╕реЗ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ? рдХреНрдпрд╛ рдХрд░реЗрдВ? рд▓реЗрди-рджреЗрди рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдХреИрд╕реЗ рдЬреАрдирд╛ рд╣реИ? рдХрд┐рд╕рдХреЛ рд╣рд░рд╛рдПрдВ? рдХреМрди рдореЗрд░реЗ рд╣рд╛рде рдлрд╛рдбрд╝ рджреЗ?



рдФрд░ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ DBMS рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрди ROW рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирд╕реЗ рдЪрдпрди рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВ - рдкреНрд░рд╕реНрддрд╛рд╡ рди рджреЗрдВ)ред рдпрд╣реА рд╣реИ, рддрд╛рдХрд┐ рдЕрдиреНрдп рд╢реИрддрд╛рди рдмрд╕ рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рди рджреЗрдЦреЗрдВ рдЬреЛ рдореЗрд░реЗ рдирдореВрдиреЗ рдореЗрдВ рдЧрд┐рд░ рдЧрдИ рдереАред



рдФрд░ рдХреНрдпрд╛? рдФрд░ рдХреИрд╕реЗ? рдФрд░ рд╡рд╣ рд╕рдм рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ, MySQL рдореЗрдВ UPDATE рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд▓реЗрдХреНрдЯ * FROM рдЯреЗрдмрд▓ рд╣реИ - рдЬреЛ рдмрд╕ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдб рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



 db.execute ("рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯ");
 рдЕрдЧрд░ (рдШрдЯрдирд╛ = db.select ("рдХрддрд╛рд░ рд╕реЗ рдЖрдИрдбреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд▓реЙрдХ = 'рдЧрд▓рдд' рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ <рдЕрдм () рдЕрдкрдбреЗрдЯ 1 рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛")) {
 [...]
 }
 db.execute ("COMMIT");




рдпрд╣реА рд╕рдм рдкреНрдпрд╛рд░ рд╣реИ!



ps рд╕рд╛рд╡рдзрд╛рди! рдпрд╣ рд╕рдм рдХреЗрд╡рд▓ InnoDB рдЬреИрд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!



All Articles