рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдЙрдирдХреА рдкреАрдврд╝реА рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЙрддрдиреА рддреЗрдЬреА рд╕реЗ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
- рддрд╛рдХрд┐ рдкреАрдврд╝реА рдХреЛ рдмреИрдЪреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ 300M рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдФрд░ рдЖрдк рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреАрди рд░рд╛рддреЛрдВ рдореЗрдВ 100M рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдирдП рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдЙрдирдХреА рдкреАрдврд╝реА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд░реНрдЧ / рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рднреА рдЬреНрдЮрд╛рдд рд╡рд┐рдзрд┐
% BuildIndices () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реА рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рд░рд╛рд╕реНрддрд╛ рдХреНрдпрд╛ рд╣реИ?
рд╕рд┐рджреНрдзрд╛рдВрдд
рдПрдХ рдирдпрд╛
% Library.IndexBuilder рд╡рд░реНрдЧ Cach├й 2013.1 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА
% ConstructIndicesParallel () рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рдеред
рдирд╛рдо рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреАрдврд╝реА рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣реЛрдЧреАред
рддреЛ, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
ClassMethod % ConstructIndicesParallel ( pTaskId = "" , pStartId As% Integer = 0 , pEndId as % Integer = -1 , pSortBegin As% Integer = 1 , pDroneCount As% Integer = 0 , pLockFlag As% Integer = 0 , pLockFlag As% Integer = 1 , p1 = 1 p = 1 ) % рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ- pTaskId - рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрдИрдбреАред рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА / рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЫреЛрдбрд╝ рджреЗрдВ
- pStartId - рдЖрдИрдбреА рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреАрдврд╝реА рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 1
- pEndId - ID рдЬрд┐рд╕ рдкрд░ рдЬрдирд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ -1 рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдЖрдИрдбреА рд╣реИ
- pSortbegin - 1/0 рдзреНрд╡рдЬ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╕рдордп $ SortBegin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
- pDroneCount - рдЕрдиреБрдХреНрд░рдорд┐рдд рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 0. рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдЙрдкрд▓рдмреНрдз рдХреЛрд░ / рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛрдЧреАред - pLockFlag рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдзреНрд╡рдЬ рд╣реИ:
- 0 = рд▓реЙрдХ рдирд╣реАрдВ
- 1 = рдЕрддреНрдпрдзрд┐рдХ рд▓реЙрдХрд┐рдВрдЧ - рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдкреВрд░реА рд╕реАрдорд╛ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓реЙрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
- 2 = рдкрдВрдХреНрддрд┐ рд╕реНрддрд░ рд▓реЙрдХрд┐рдВрдЧ - рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдФрд░ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдиреЛрдб рдкрд░ рдПрдХ рд╕рд╛рдЭрд╛ рд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкреАрдврд╝реА рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдкрдВрдХреНрддрд┐ рддреБрд░рдВрдд рд▓реЙрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред
- pJournalFlag - 0/1 рдзреНрд╡рдЬ рдЬреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
1 - рдЗрдВрдбреЗрдХреНрд╕ рдЬреЗрдирд░реЗрд╢рди рд▓реЙрдЧ рдЗрди рд╣реЛрдЧрд╛, 0 - рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЕрднреНрдпрд╛рд╕
рдЕрдм рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
USER рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ 1M рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рд╡реЗрд░рд┐рдПрдмрд▓-рд▓реЗрдВрде рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ [1-100] рд╕реЗ рднрд░реЗрдВ, рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ
% BuildIndices () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдбреЗрдХреНрд╕
рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛ:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрд╛рддрд╛рд░% рд╣реИ
{
рд╕реВрдЪрдХрд╛рдВрдХ idxn n рдХреЗ рд░реВрдк рдореЗрдВ SQLUPPER ( 6 );
рдЧреБрдг n % рд╕реНрдЯреНрд░рд┐рдВрдЧ ( MAXLEN = 100 );
ClassMethod Fill ( n % Integer = 10000000 )
{
рд╕реЗрдЯ рдбреЗрдЯрд╛ = $ рдмрджрд▓реЗрдВ ( $ рдФрдЪрд┐рддреНрдп ( "" , 100), "" , "рдП" )
рд╕реЗрдЯ рд╕рдордп = $ ZHorolog
рдХрд░ рдпреЛрдЧреНрдп ^% NOJRN
рдХрд░реЛ .. % KillExtent ()
рд╕реЗрдЯ ^ рдбреЗрдореЛ .estD = n
рд╕реЗрдЯ ^ Demo.testD (1) = $ ListBuild ( "" , $ рдПрдХреНрд╕рдЯреНрд░реЗрдХреНрдЯ ( рдбреЗрдЯрд╛ , 1, $ рд░реИрдВрдбрдо (100% +1))
i = 2: 1: n рд╕реЗрдЯ ^ ( i ) = $ ListBuild ( "" , $ Extract ( рдбреЗрдЯрд╛ , 1, $ рд░реИрдВрдбрдо (100) +1))
рд╕рдХреНрд╖рдо рдХрд░реЗрдВ ^% NOJRN
"рдЗрдиреНрд╕рд░реНрдЯ =" рд▓рд┐рдЦреЗрдВ , $ ZHorolog - time , "secред" ,!
}
ClassMethod BIndex ()
{
рд╕реЗрдЯ рд╕рдордп = $ ZHorolog
рдХрд░реЛ .. % рдмрд┐рд▓реНрдбрдЗрдВрдбрд┐рд╕ (, 1,1)
"reindexing =" , $ ZHorolog - time , "secред" рд▓рд┐рдЦреЗрдВ ред ,!
}
}
рдореЗрд░реЗ рдкрд░рд┐рдгрд╛рдо:
USER>do ##class(demo.test).Fill()
= 9.706935 .
USER>do ##class(demo.test).BIndex()
= 71.966953 .
рдЕрдм рдирдП
% IndexBuilder рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
- рдкрд╣рд▓реЗ, % PurgeIndices () рд╡рд┐рдзрд┐ (рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪрд░рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд┐рдЫрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ
- % IndexBuilder рд╕реЗ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА
- INDEXBUILDERFILTER рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕реВрдЪреА рд▓рд┐рдЦреЗрдВред
рдпрджрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдЕрдиреБрдХреНрд░рдорд┐рдд рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ - рд╣рдорд╛рд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд▓рд┐рдП рдЕрджреГрд╢реНрдп рдмрдирд╛ рджреЗрдВ рддрд╛рдХрд┐ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗ рдЬреЛ рдЕрднреА рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо $ System.SQL.SetMapSelectability () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
ClassMethod SetMapSelectability ( pTablename as % Library.String = "" , pMapname as % Library.String = "" , pValue as % Boolean = "" ) % Library.Sring рдХреЗ рд░реВрдк рдореЗрдВ
рддрд░реНрдХреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг:
- pTablename - рдЯреЗрдмрд▓ рдХрд╛ рдирд╛рдо
- pMapname - рд╕реВрдЪрдХрд╛рдВрдХ рдирд╛рдо
- pValue - 0/1 рдзреНрд╡рдЬ рдЬреЛ SQL рдПрдЧреНрдЬреАрдХреНрдпреВрдЯрд┐рд╡ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рдХреА рджреГрд╢реНрдпрддрд╛ (1) рдпрд╛ рдЕрджрд░реНрд╢рди (0) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдиреЛрдЯ: рдХрдХреНрд╖рд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЕрджреГрд╢реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
- % ConstructIndicesParallel () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
- рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рд╣рдорд╛рд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдПрдВ
- рд▓рд╛рдн!
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧреА:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ ( % рд╕реНрдерд╛рдпреА , % рдЗрдВрдбреЗрдХреНрд╕рдмреНрдпреБрд▓реЗрд░ )
{
рдкреИрд░рд╛рдореАрдЯрд░ INDEXBUILDERFILTER = "idxn" ;
рдкреИрд░рд╛рдореАрдЯрд░ BITMAPCHUNKINMEMORY = 0 ;
рд╕реВрдЪрдХрд╛рдВрдХ idxn n рдХреЗ рд░реВрдк рдореЗрдВ SQLUPPER ( 6 );
рдЧреБрдг n % рд╕реНрдЯреНрд░рд┐рдВрдЧ ( MAXLEN = 100 );
...
ClassMethod FastBIndex ()
{
рдХрд░реЛ .. % PurgeIndices ( $ ListBuild ( "idxn" ))
$ System .SQL рдХрд░реЛ ред SetMapSelectability ( $ classname (), "idxn" , $$$ NO )
рдХрд░реЛ .. % рдирд┐рд░реНрдорд╛рдг
$ System .SQL рдХрд░реЛ ред SetMapSelectability ( $ classname (), "idxn" , $$$ YES )
}
}
рдореЗрд░реЗ рдкрд░рд┐рдгрд╛рдо:
USER>do ##class(demo.test).FastBIndex()
Building 157 chunks and will use parallel build algorithm with 4 drone processes.
SortBegin is requested.
Started drone process: 3812
Started drone process: 4284
Started drone process: 7004
Started drone process: 7224
Expected time to complete is 43 secs to build 157 chunks of 64,000 objects using 4 processes.
Waiting for processes to complete....done.
Elapsed time using 4 processes was 34.906643.
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЧрддрд┐ рджреЛрдЧреБрдиреА рд╣реЛ рдЧрдИ рд╣реИред
рдЖрдкрдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдкрд░, рдкрд░рд┐рдгрд╛рдо рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рднреА рддреЗрдЬ?
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдЙрддреНрдерд╛рди рдореЗрдВ рдФрд░ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ?
рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдЯреЙрдХ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реИрдо рд╣реИ, рддреЛ рд╣рд╛рдБред
рд╕реВрдЪрдХрд╛рдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдВрддрд░рд┐рдХ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рддрдерд╛рдХрдерд┐рдд рдмрд┐рдЯрдореИрдк рдмреНрд▓реЙрдХ рдмрдирд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ рдирд┐рдЬреА
рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди
BITMAPCHUNKINMEMORY рдмреВрд▓рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ,
рдЖрдк рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ RAM рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 1 рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ RAM рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдХреНрд░рдорд┐рдд рдмрдбрд╝реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ
<STORE> рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ,
BITMAPCHUNKINMEMORY 0 рд╣реИред