I have not had to do this, but I remember seeing others mention this process.
it went something like this: - TURN OFF the indexes through out the database. - let compact do its job - TURN ON indexes through out the database - let database index -- not sure if this is needed/helps but you might want to look at turning off triggers too. Chip On Thu, 26 Jul 2018 09:47:00 -0500, John DeSoi via 4D_Tech wrote: > I had a very stable 16 user database with 4D 15 32-bit Mac. After > upgrading to 4D 16 64-bit Mac (on 16.3HF4), 4D server has been > crashing about twice a month. There is no consistency on the process > or records involved in the crash. The only consistency is the > backtrace of the internal 4D routines involved. Here are some samples. > > Thread 93 Crashed:: Import (id = 133091) > 0 libsystem_kernel.dylib 0x00007fff7f337b6e __pthread_kill + 10 > 1 libsystem_pthread.dylib 0x00007fff7f502080 pthread_kill + 333 > 2 libsystem_c.dylib 0x00007fff7f2931ae abort + 127 > 3 libsystem_malloc.dylib 0x00007fff7f39cad4 szone_error + 596 > 4 libsystem_malloc.dylib 0x00007fff7f39e0eb > small_free_list_remove_ptr_no_clear + 790 > 5 libsystem_malloc.dylib 0x00007fff7f392061 > small_malloc_from_free_list + 171 > 6 libsystem_malloc.dylib 0x00007fff7f390859 > szone_malloc_should_clear + 1600 > 7 libsystem_malloc.dylib 0x00007fff7f3901bd > malloc_zone_malloc + 103 > 8 libsystem_malloc.dylib 0x00007fff7f38f4c7 malloc + 24 > 9 com.4d.component.db4d 0x000000010f052e19 > VDBCacheMgr::NewPtr(unsigned long, unsigned char, int, int) + 25 > 10 com.4d.component.db4d 0x000000010f399c00 > TreeMem::PutInto(int, int, void*, OccupableStack*) + 256 > 11 com.4d.component.db4d 0x000000010f39e26c > TreeMemHeader::PutIntoTreeMem(int, int, void*, OccupableStack*) + 428 > 12 com.4d.component.db4d 0x000000010f125e2d > DataTableRegular::LoadRecord(int, unsigned long long&, > DB4D_Way_of_Locking, BaseTaskInfo*, unsigned char, unsigned char, > ReadAheadBuffer*, unsigned char*) + 1053 > > > Thread 77 Crashed:: CWR Export (id = 170783) > 0 com.4d.component.db4d 0x000000010f95ea6b > TreeMem::RetainFrom(int, int, OccupableStack*) + 139 > 1 com.4d.component.db4d 0x000000010f95ea9e > TreeMem::RetainFrom(int, int, OccupableStack*) + 190 > 2 com.4d.component.db4d 0x000000010f9636eb > TreeMemHeader::RetainFromTreeMem(int, OccupableStack*) + 75 > 3 com.4d.component.db4d 0x000000010f6eb7f7 > DataTableRegular::LoadNotFullRecord(int, unsigned long long&, > DB4D_Way_of_Locking, BaseTaskInfo*, unsigned char, ReadAheadBuffer*, > unsigned char*, unsigned char*) + 583 > 4 com.4d.component.db4d 0x000000010f6df737 > DataTable::Search(unsigned long long&, RechNode*, Bittab*, > xbox::VProgressIndicator*, BaseTaskInfo*, DB4D_Way_of_Locking, > Bittab*, int, Bittab&, LocalEntityModel*) + 3239 > 5 com.4d.component.db4d 0x000000010f8389d3 > RechNode::Perform(OptimizedQuery*, Bittab**, Bittab*, > xbox::VProgressIndicator*, xbox::VValueBag*, BaseTaskInfo*, > DB4D_Way_of_Locking, Bittab*, int, Bittab&, RechNode*&) + 163 > 6 com.4d.component.db4d 0x000000010f8469ca > RechNodeMultiOperator::Perform(OptimizedQuery*, Bittab**, Bittab*, > xbox::VProgressIndicator*, xbox::VValueBag*, BaseTaskInfo*, > DB4D_Way_of_Locking, Bittab*, int, Bittab&, RechNode*&) + 2058 > 7 com.4d.component.db4d 0x000000010f84da5f > OptimizedQuery::Perform(Bittab*, xbox::VProgressIndicator*, > BaseTaskInfo*, unsigned long long&, DB4D_Way_of_Locking, int, > Bittab*) + 1903 > 8 com.4d.component.db4d 0x000000010f6e0f12 > DataTable::ExecuteQuery(SearchTab*, QueryOptions*, QueryResult&, > BaseTaskInfo*, xbox::VProgressIndicator*) + 322 > 9 com.4d.component.db4d 0x000000010f690933 > VDBMgr::ExecExecuteQuery(IRequestReply*, CDB4DBaseContext*) + 259 > 10 com.4d.component.db4d 0x000000010f688253 > VDBMgr::ExecuteRequest(short, IRequestReply*, CDB4DBaseContext*) + > 1475 > 11 com.4d.component.db4d 0x000000010f697697 > VDBMgr::ExecuteRequest(short, xbox::IStreamRequestReply*, > CDB4DContext*) + 311 > 12 com.4d.component.db4d 0x000000010f9a4a64 > DB4DConnectionHandler::Handle(unsigned long long&) + 2036 > > > So it appears that 4D is crashing shortly after loading a record > (DataTableRegular::LoadRecord, DataTableRegular::LoadNotFullRecord). > The database is validated every night and reports no errors. Manual > check in MSC reports no errors. With no other solution in sight, it > is time to compact the database (70+ GB) and see if it makes a > difference. Here is what happens. > > 1. Open MSC, click on Compact, click on Advanced. Check "Force > updating of the records" and "Compact address table". Click the > compact button. > > The first bit of confusion is the path under "Original files backup > folder" is *not* a backup of the original database. It is the new > compacted database. > > 2. Wait for hours and the progress bar finally reaches the last table > and is pixels away from the end. Wait for many more hours, nothing > seems to be happening even though 4D is using 100% CPU. Finally > discover that 4D is indexing the database, but the indexing progress > window is hidden behind the MSC window. > > 3. Wait many more hours, progress bar for creation of a single index > on a table with 40 million records has barely moved. Cache used in > creation of the index shows 0%. The database memory setting is 4GB. > Activity Monitor shows 4D is using 300MB. I suspect when 4D restarts > to open the database for compacting that it ignores the database > memory settings. Indexing will never complete under these conditions. > > 4. Force 4D to quit. Trash the index file. Remove the "_" prefix from > the database in "Original files backup folder", then open the > database. It re-indexes normally with plenty of cache available. > > > My experience with compacting was the same using 4D 16.3HF4 and 17.0. > Anyone have a better experience with this on a large data file? > > John DeSoi, Ph.D. > > > > > ********************************************************************** > 4D Internet Users Group (4D iNUG) > Archive: http://lists.4d.com/archives.html > Options: https://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:4d_tech-unsubscr...@lists.4d.com > ********************************************************************** --------------- Gas is for washing parts Alcohol is for drinkin' Nitromethane is for racing ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **********************************************************************