I'm currently trying to speed up some very slow uploading point feature layer of approximately 11MM rows. There are 115 columns. Approximately, 10 are strings and the remainder are doubles/ints/floats. (Mostly doubles and mostly NULL.)
I am creating a file-geodatabase for my data, and am using the arcgis for python api to upload my file gdb, and then publishing it. It unfortunately is painfully slow. ~4hrs. It starts fast, but as the table gets larger, the upload drops drastically in speed. (I have a polling monitor script that tests the published feature class collection every 5 minutes and it starts at >300k rows per 5 minutes, but then drops to around 20k by the 3hr mark).
As an experiment, I switched uploading 2 file-geodatabases, one that sets up the schema, and one that contains 8 roughly equivalent partitions. I upload the files, publish the 0 row pdb and then run 8 different append operations in parallel. This is much faster (>1.2MM per 5minutes). However, my failure rate is skyrocketing. (To be fair, the old 4hr job often fails too). I have to update my data monthly, and most of my other tables are much smaller. (Ranging from 400 rows to about 1.6mm for the remaining datasets).
I've also tried a much more narrow table, approximately 10 columns same number of rows and I'm still getting attrocious publish speeds. I checked my network connection and it is not the file upload that is the problem. (The payload for the full table is only 2GB zipped, and I see that I finish that upload usually in under a minute as I have gigabit upload speed). The publish or the append are problematically slow.
How does one upload very large datasets to arcgis online without going crazy? I can probably spin up a new VM, set up postgres and build my table in less than 4 hours.