mirror of
https://github.com/sandronator/finetuning_aufgabe4.git
synced 2026-09-04 08:36:09 +02:00
minor changes
This commit is contained in:
+6
-1
@@ -12,13 +12,18 @@ class BaseStrategy:
|
|||||||
self.cursor = conn.cursor()
|
self.cursor = conn.cursor()
|
||||||
self.db_name = db_name
|
self.db_name = db_name
|
||||||
self.queries = queries
|
self.queries = queries
|
||||||
|
self.BASENAME = "Base "
|
||||||
|
self.strategy_name = self.BASENAME
|
||||||
|
|
||||||
def set_queries(self, queries):
|
def set_queries(self, queries):
|
||||||
self.queries = queries
|
self.queries = queries
|
||||||
|
|
||||||
|
def set_strategy(self, name: str):
|
||||||
|
self.strategy_name = self.BASENAME + name
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
for strategy, query in self.queries.items():
|
for strategy, query in self.queries.items():
|
||||||
print("Running: " + strategy + "\n")
|
print("Running: " + self.strategy_name + "\n")
|
||||||
start = time.time()
|
start = time.time()
|
||||||
self.cursor.execute(query)
|
self.cursor.execute(query)
|
||||||
end = time.time()
|
end = time.time()
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ from baseStrategy import BaseStrategy
|
|||||||
|
|
||||||
class HashJoinStrategy(BaseStrategy):
|
class HashJoinStrategy(BaseStrategy):
|
||||||
def __init__(self, conn, db_name, all_queries):
|
def __init__(self, conn, db_name, all_queries):
|
||||||
|
self.BASENAME = "Hash Join "
|
||||||
|
|
||||||
super().__init__(conn, db_name, all_queries)
|
super().__init__(conn, db_name, all_queries)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|||||||
@@ -15,33 +15,42 @@ if __name__ == '__main__':
|
|||||||
# Aufgabe 1
|
# Aufgabe 1
|
||||||
join_manager = Manager(BaseStrategy(conn_postsql, db_post, queries_postgres["with_index"]))
|
join_manager = Manager(BaseStrategy(conn_postsql, db_post, queries_postgres["with_index"]))
|
||||||
# join_manager.setup_db("no-index")
|
# join_manager.setup_db("no-index")
|
||||||
# join_manager.execute() # 3 Mrd. Tupel via Kreuzprodukt -> > 10 min
|
# join_manager.execute() # 3 Billionen. Tupel via Kreuzprodukt -> > 10 min
|
||||||
join_manager.setup_db("unique-publ")
|
join_manager.setup_db("unique-publ")
|
||||||
|
join_manager.setStrategyName("unique-publ")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
join_manager.setup_db("cl-both")
|
join_manager.setup_db("cl-both")
|
||||||
|
join_manager.setStrategyName("cl-both")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
|
|
||||||
# Aufgabe 2 — vorheriger Lauf war 'cl-both' (CLUSTER hat Tabelle physisch sortiert);
|
# Aufgabe 2
|
||||||
# reload_data=True stellt die ursprüngliche Ladereihenfolge wieder her.
|
# reload_data=True stellt die ursprüngliche Ladereihenfolge wieder her.
|
||||||
join_manager.setStrategy(NestedInnerLoopStrategy(conn_postsql, db_post, queries_postgres["with_index"]))
|
join_manager.setStrategy(NestedInnerLoopStrategy(conn_postsql, db_post, queries_postgres["with_index"]))
|
||||||
join_manager.setup_db("nc-publ", reload_data=True)
|
join_manager.setup_db("nc-publ", reload_data=True)
|
||||||
|
join_manager.setStrategyName("nc-publ")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
join_manager.setup_db("nc-auth")
|
join_manager.setup_db("nc-auth")
|
||||||
|
join_manager.setStrategyName("nc-auth")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
join_manager.setup_db("nc-both")
|
join_manager.setup_db("nc-both")
|
||||||
|
join_manager.setStrategyName("nc-both")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
|
|
||||||
# Aufgabe 3 — Tabelle ist noch im Original-Layout, kein Reload nötig.
|
# Aufgabe 3
|
||||||
join_manager.setStrategy(SortMergeStrategy(conn_postsql, db_post, queries_postgres["no_index"]))
|
join_manager.setStrategy(SortMergeStrategy(conn_postsql, db_post, queries_postgres["no_index"]))
|
||||||
join_manager.setup_db("no-index")
|
join_manager.setup_db("no-index")
|
||||||
|
join_manager.setStrategyName("no-index")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
join_manager.setQueries(queries_postgres["with_index"])
|
join_manager.setQueries(queries_postgres["with_index"])
|
||||||
join_manager.setup_db("nc-both")
|
join_manager.setup_db("nc-both")
|
||||||
|
join_manager.setStrategyName("nc-both")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
join_manager.setup_db("cl-both")
|
join_manager.setup_db("cl-both")
|
||||||
|
join_manager.setStrategyName("cl-both")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
|
|
||||||
# Aufgabe 4 — wieder vom CLUSTER-Zustand wegkommen.
|
# Aufgabe 4 — wieder vom CLUSTER-Zustand wegkommen.
|
||||||
join_manager.setStrategy(HashJoinStrategy(conn_postsql, db_post, queries_postgres["no_index"]))
|
join_manager.setStrategy(HashJoinStrategy(conn_postsql, db_post, queries_postgres["no_index"]))
|
||||||
join_manager.setup_db("no-index", reload_data=True)
|
join_manager.setup_db("no-index", reload_data=True)
|
||||||
|
join_manager.setStrategyName("nc-publ")
|
||||||
join_manager.execute()
|
join_manager.execute()
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ class Manager:
|
|||||||
def setStrategy(self, strategy: BaseStrategy):
|
def setStrategy(self, strategy: BaseStrategy):
|
||||||
self.strategy = strategy
|
self.strategy = strategy
|
||||||
|
|
||||||
|
def setStrategyName(self, name: str):
|
||||||
|
self.strategy.set_strategy(name)
|
||||||
|
|
||||||
def setQueries(self, queries: dict[str, str]):
|
def setQueries(self, queries: dict[str, str]):
|
||||||
self.strategy.set_queries(queries)
|
self.strategy.set_queries(queries)
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from baseStrategy import BaseStrategy
|
|||||||
|
|
||||||
class NestedInnerLoopStrategy(BaseStrategy):
|
class NestedInnerLoopStrategy(BaseStrategy):
|
||||||
def __init__(self, conn, db_name, all_queries):
|
def __init__(self, conn, db_name, all_queries):
|
||||||
|
self.BASENAME = "Nested Inner Loop "
|
||||||
super().__init__(conn, db_name, all_queries)
|
super().__init__(conn, db_name, all_queries)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from baseStrategy import BaseStrategy
|
|||||||
|
|
||||||
class SortMergeStrategy(BaseStrategy):
|
class SortMergeStrategy(BaseStrategy):
|
||||||
def __init__(self, conn, db_name, all_queries):
|
def __init__(self, conn, db_name, all_queries):
|
||||||
|
self.BASENAME = "Sort Merge "
|
||||||
super().__init__(conn, db_name, all_queries)
|
super().__init__(conn, db_name, all_queries)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user