> ÜÔÏ ÂÙÌÏ ÐÏÎÑÔÎÏ, ÎÏ ÞÅÇÏ ÔÙ ÜÔÉÍ ÈÏÞÅÛØ ÄÏÂÉÔÓÑ? × ÏÂÝÅÍ ÓÌÕÞÁÅ
ÄÏÂÉÔÓÑ ÈÏÞÕ ÏÄÎÏÇÏ - ÐÏÎÑÔØ ËÁË ÒÁÂÏÔÁÅÔ update (ÐÏËÁ ÔÏËÏ update) × FB. ÎÕ É ÚÁÏÄÎÏ, ÞÔÏ ÒÁÚÒÁÂÏÔÞÉËÉ ÄÕÍÁÀÔ ÐÏ ÜÔÏÍÕ ÐÏ×ÏÄÕ (× ÓÍÙÓÌÅ ÞÔÏ ÓÞÉÔÁÅÔÓÑ ÎÏÒÍÁÌØÎÁÍ ÐÏ×ÅÄÅÎÉÅÍ, Á ÞÔÏ "ÎÕ ËÏÇÄÁ-ÎÉÂÕÄØ ÓÄÅÌÁÅÍ ÐÒÁ×ÉÌØÎÅÅ") > ÐÒÏÂÌÅÍÕ deadlock ÔÙ ÎÅ ÒÅÛÉÌ, ÐÏÓËÏÌØËÕ × ÏÄÎÏÊ ÔÒÁÎÚÁËÃÉÉ ÍÏÖÎÏ > ÉÓÐÏÌØÚÏ×ÁÔØ ÎÅÓËÏÌØËÏ update. ÎÕ ÄÁ, × Ô×ÏÅÍ ËÏÎËÒÅÔÎÏÍ ÓÌÕÞÁÅÅ ÜÔÏ ÂÙ > ÒÅÛÉÌÏ Ô×ÏÀ ÐÒÏÂÌÅÍÕ _ÅÓÌÉ_ ÓÒÁÚÕ ÐÏÓÌÅ update ÓÄÅÌÁÔØ commit. ÅÓÌÉ ÜÔÏÇÏ > ÎÅ ÓÄÅÌÁÔØ, ÔÏ ÎÁ deadlock ÔÙ ÎÁÒ×ÅÛÓÑ × ËÁËÏÍ-ÔÏ ÄÒÕÇÏÍ update. × ÄÒÕÇÏÍ ÍÅÓÔÅ ÍÁÌÏ ×ÅÒÏÑÔÎÏ ÅÓÌÉ ×ÅÒÉÔØ ×ÏÔ ÜÔÏÍÕ ÄÏËÕÍÅÎÔÕ http://www.ibase.ru/devinfo/norecver.htm (ËÓÔÁÔÉ Á ÅÍÕ ÍÏÖÎÏ ×ÅÒÉÔØ, ÉÎÆÏÒÍÁÃÉÑ ÐÏ ÐÒÅÖÎÅÍÕ ÁËÔÕÌØÎÁ Ó ÐÏÑ×ÌÅÎÉÅÍ ÎÏ×ÙÈ ×ÅÒÓÉÊ?) > ÔÁË ÞÔÏ ÅÄÉÎÓÔ×ÅÎÎÏÅ, ÞÔÏ ÔÅÂÅ ÐÏÍÏÖÅÔ - ÚÁÂÌÏËÉÒÏ×ÁÔØ ÚÁÐÉÓÉ _× ÎÁÞÁÌÅ_ > ÔÒÁÎÚÁËÃÉÉ (ÜÔÏ ÄÏÌÖÅÎ ÂÙÔØ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÓÁÍÙÊ ÐÅÒ×ÙÊ ÏÐÅÒÁÔÏÒ × > ÔÒÁÎÚÁËÃÉÉ), Á ÕÖÅ ÐÏÔÏÍ ÄÅÌÁÔØ update. ÜÔÏ ÔÁË ÎÁÚÙ×ÁÅÍÙÊ two-phase > locking. ÜÔÏ ÐÏÎÑÔÎÏ > ÅÓÌÉ ÔÙ ÎÅ × ËÕÒÓÅ, ÔÏ Õ ÎÁÓ update some_table set pk = pk + 1 ÐÒÉ×ÅÄÅÔ Ë > ÎÁÒÕÛÅÎÉÀ ÕÎÉËÁÌØÎÏÓÔÉ ËÌÀÞÁ (Á × ÄÒÕÇÉÈ ÓÅÒ×ÅÒÁÈ - ÎÅÔ), Á ÜÔÏ ÂÏÌÅÅ > ÓÅÒØÅÚÎÁÑ ÐÒÏÂÌÅÍÁ ÞÅÍ Ô×ÏÑ, ÎÏ ÅÅ ÅÝÅ ÎÅ ÒÅÛÉÌÉ, ÐÏÓËÏÌØËÕ ÎÅ ×ÓÅ ÔÁË > ÔÒÉ×ÉÁÌØÎÏ. ÄÁ Õ ÍÅÎÑ × ÏÂÝÅÍ-ÔÏ ÐÏËÁ ÐÒÏÂÌÅÍÙ ÎÅÔÕ, Ñ ÅÝÅ ÎÁ ÔÏÊ ÓÔÁÄÉÉ ËÏÇÄÁ ÍÏÇÕ ×ÙÂÉÒÁÔØ ËÁËÏÊ ÆÕÎËÃÉÏÎÁÌ ÄÏÌÖÅÎ ÂÙÔØ × ËÏÎÅÞÎÏÊ ÓÉÓÔÅÍÅ. ÔÁË ÞÔÏ ÍÏÇÕ ÐÒÏÓÔÏ ÎÉËÏÍÕ ÎÅ ÇÏ×ÏÒÉÔØ ÞÔÏ ÞÔÏ ÔÏ ÈÏÔÅÌ ÓÄÅÌÁÔØ :). ÚÄÅÓØ ÚÁÄÁÞÁ ÉÍÅÎÎÏ ÐÏÎÑÔØ ÞÔÏ É ËÁËÉÍÉ ÓÐÏÓÏÂÁÍÉ ÍÏÖÎÏ ÒÅÁÌÉÚÏ×ÁÔØ É ËÁËÉÅ ÚÁÔÒÁÔÙ ÒÅÓÕÒÓÏ× (×ÒÅÍÅÎÉ) ÜÔÏ ÐÏÔÒÅÂÕÅÔ. > > ÔÁË ÞÔÏ ÏÔ×ÅÔ ÎÁ Ô×ÏÊ ×ÏÐÒÏÓ: "ÄÁ, ÂÙÌÏ ÂÙ ÌÏÇÉÞÎÅÅ, ÎÏ ÎÅÔ, ÐÏËÁ ×ÓÅ > ÏÓÔÁÅÔÓÑ ÔÁË ËÁË ÂÙÌÏ ÄÁ É ÐÒÏÂÌÅÍÕ Ô×ÏÀ ÒÅÛÁÔØ ÎÁÄÏ ÐÏ ÄÒÕÇÏÍÕ". > ÏËÉ

