]> matita.cs.unibo.it Git - helm.git/commitdiff
tentative hack for the incredible DB slowdown.
authorEnrico Tassi <enrico.tassi@inria.fr>
Mon, 11 Jul 2005 14:07:04 +0000 (14:07 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Mon, 11 Jul 2005 14:07:04 +0000 (14:07 +0000)
I suppose we use the DB in a really uncommon way, billions of inserts and
queryes mixed, while (I suppose) the usual is a bunch of inserts and then
billions of queries. ANALYZE TABLE is called sometime to try to ameliorate this
problem.

helm/ocaml/metadata/metadataDb.ml

index 51b432a4f5b843545a1e79eb6adf370d54cd956b..f18787e83a0f3e71b7c9536cc662aae42ba5eef2 100644 (file)
@@ -138,7 +138,7 @@ let already_indexed _ = false
 let index_constant ~dbd =
   let query = prepare_insert () in
   fun ~uri ~body ~ty  ->
-    if not (already_indexed uri) then begin
+    if not (already_indexed uri) then beginrel_tbl ()
       let name = UriManager.name_of_uri uri in
       let uri = UriManager.string_of_uri uri in
       let metadata = MetadataExtractor.compute ~body ~ty in
@@ -162,8 +162,24 @@ let index_inductive_def ~dbd =
       List.iter (fun (uri, name, _) -> insert_name ~dbd ~uri ~name) metadata
     end
 *)
+
+(***** TENTATIVE HACK FOR THE DB SLOWDOWN - BEGIN *******)
+let analyze_index = ref 0
+let eventually_analyze dbd =
+  incr analyze_index;
+  if !analyze_index > 30 then
+    begin
+      let analyze t = "ANALYZE TABLE " ^ t ^ ";" in
+      List.iter 
+        (fun table -> ignore (Mysql.exec dbd (analyze table)))
+        [name_tbl (); rel_tbl (); sort_tbl (); obj_tbl(); count_tbl()]
+    end
+  
+(***** TENTATIVE HACK FOR THE DB SLOWDOWN - END *******)
+
 let index_obj ~dbd ~uri = 
   if not (already_indexed uri) then begin
+    eventually_analyze dbd;
     let metadata = MetadataExtractor.compute_obj uri in
     let uri_of (a,b,c) = (a,c) in
     let uri = UriManager.string_of_uri uri in