At the moment annotations are saved in the
Option table into a single row per site (see
\Piwik\Plugins\Annotations\AnnotationList::save). This approach seems to cause DB performance problems when annotations are added in bulk due to constant serialization and locks for updating on a single row.
An approach to cleanly solve this problem would be to create a dedicated DB table for the annotations rather than the single row serialization. This would require a new model/schema and a migration of the current data, but would be a good way to future proof and solve this performance problem.
I will move this to the For Prioritization queue. It is a pretty important issue to keep Cloud performant also.
Would it be possible to add it as a report in itself too? So that we could export it afterwards? For example as an email report.