def _case_to_case_index_ratio(self): if not should_use_sql_backend(self.domain): self.stdout.write('\nUnable to get case to index ratio of Couch domain\n') return db_name = get_db_aliases_for_partitioned_query()[0] # just query one shard DB case_query = CommCareCaseSQL.objects.using(db_name).filter(domain=self.domain) index_query = CommCareCaseIndexSQL.objects.using(db_name).filter(domain=self.domain) case_count = estimate_row_count(case_query, db_name) case_index_count = estimate_row_count(index_query, db_name) self._print_value('Ratio of cases to case indices: 1 : ', case_index_count / case_count)
def _case_to_case_index_ratio(self): db_name = get_db_aliases_for_partitioned_query()[ 0] # just query one shard DB case_query = CommCareCase.objects.using(db_name).filter( domain=self.domain) index_query = CommCareCaseIndex.objects.using(db_name).filter( domain=self.domain) case_count = estimate_row_count(case_query, db_name) case_index_count = estimate_row_count(index_query, db_name) self._print_value('Ratio of cases to case indices: 1 : ', case_index_count / case_count)
def get_approximate_doc_count(self, from_db): """Get the approximate doc count from the given DB :param from_db: The DB alias to query """ query = self.query(from_db, for_count=True) return estimate_row_count(query, from_db)
def _get_count(config): table_name = get_table_name(config.domain, config.table_id) db_name = connection_manager.get_django_db_alias(config.engine_id) query = ('SELECT * FROM "%s"' % table_name, []) try: return estimate_row_count(query, db_name) except ProgrammingError: return "Table not found"
def get_sql_repeat_record_count(domain, repeater_id=None, state=None): from .models import SQLRepeatRecord queryset = SQLRepeatRecord.objects.filter(domain=domain) if repeater_id: queryset = queryset.filter(repeater__repeater_id=repeater_id) if state: queryset = queryset.filter(state=state) return estimate_row_count(queryset)
def delete_old_images_on_db(db_name, cutoff): if isinstance(cutoff, str): cutoff = parse_date(cutoff, default_timezone=None) max_age = cutoff - timedelta(days=90) db = get_blob_db() def _get_query(db_name, max_age=max_age): return BlobMeta.objects.using(db_name).filter( type_code=CODES.form_attachment, domain='icds-cas', created_on__lt=max_age).order_by('created_on') bytes_deleted = 0 query = _get_query(db_name) metas = list(query[:1000]) run_again = len(metas) == 1000 if metas: for meta in metas: bytes_deleted += meta.content_length or 0 db.bulk_delete(metas=metas) tags = {'database': db_name} age = datetime.utcnow() - metas[-1].created_on metrics_gauge('commcare.icds_images.max_age', value=age.total_seconds(), tags=tags) row_estimate = estimate_row_count(query, db_name) metrics_gauge('commcare.icds_images.count_estimate', value=row_estimate, tags=tags) metrics_counter('commcare.icds_images.bytes_deleted', value=bytes_deleted) metrics_counter('commcare.icds_images.count_deleted', value=len(metas)) runtime = datetime.utcnow() - cutoff if run_again and runtime.total_seconds() < MAX_RUNTIME: delete_old_images_on_db.delay(db_name, cutoff)
def _get_count(config): table_name = get_table_name(config.domain, config.table_id) db_name = connection_manager.get_django_db_alias(config.engine_id) query = ('SELECT * FROM "%s"' % table_name, []) return estimate_row_count(query, db_name)