def run(self): for i in range(len(self.transactions)): transaction = Transaction() transaction.queries = [ query for query in self.transactions[i].queries ] # each transaction returns True if committed or False if aborted self.stats.append(transaction.run()) # stores the number of transactions that committed self.result = len(list(filter(lambda x: x, self.stats)))
for i in range(0, 10000): query.insert(906659671 + i, 93, 0, 0, 0) keys.append(906659671 + i) insert_time_1 = process_time() print("Inserting 10k records took: \t\t\t", insert_time_1 - insert_time_0) # Measuring update Performance update_cols = [ [None, randrange(0, 100), None, None, None], [None, None, randrange(0, 100), None, None], [None, None, None, randrange(0, 100), None], [None, None, None, None, randrange(0, 100)], ] t = Transaction() for i in range(10): key = choice(keys) t.add_query(query.select, key, 0, [1, 1, 1, 1, 1]) t.add_query(query.update, key, *choice(update_cols)) t.add_query(query.select, key, 0, [1, 1, 1, 1, 1]) t.run() db.close() exit() update_time_0 = process_time() for i in range(0, 10000): query.update(choice(keys), *(choice(update_cols))) update_time_1 = process_time()
keys.append(key) records[key] = [key, 0, 0, 0, 0] q = Query(grades_table) q.insert(*records[key]) # Create transactions and assign them to workers transactions = [] transaction_workers = [] for i in range(num_threads): transaction_workers.append(TransactionWorker()) for i in range(10000): key = choice(keys) record = records[key] c = record[1] transaction = Transaction() for i in range(5): c += 1 q = Query(grades_table) transaction.add_query(q.select, key, 0, [1, 1, 1, 1, 1]) q = Query(grades_table) transaction.add_query(q.update, key, *[None, c, None, None, None]) transaction_workers[i % num_threads].add_transaction(transaction) threads = [] for transaction_worker in transaction_workers: threads.append(threading.Thread(target=transaction_worker.run, args=())) for thread in threads: thread.start()
keys.append(key) records[key] = [key, 0, 0, 0, 0] q = Query(grades_table) q.insert(*records[key]) print("insert finshed") # create TransactionWorkers transaction_workers = [] for i in range(num_threads): transaction_workers.append(TransactionWorker([])) # generates 10k random transactions # each transaction will increment the first column of a record 5 times for i in range(1000): k = randint(0, 2000 - 1) transaction = Transaction() for j in range(5): key = keys[k * 5 + j] q = Query(grades_table) transaction.add_query(q.select, key, 0, [1, 1, 1, 1, 1]) q = Query(grades_table) transaction.add_query(q.increment, key, 1) transaction_workers[i % num_threads].add_transaction(transaction) threads = [] for transaction_worker in transaction_workers: threads.append(threading.Thread(target=transaction_worker.run, args=())) for i, thread in enumerate(threads): print('Thread', i, 'started') thread.start()
from lstore.db import Database from lstore.query import Query from lstore.transaction import Transaction from random import choice, randint, sample, seed db = Database() db.open('~/ECS165') # Student Id and 4 grades grades_table = db.create_table('Grades', 5, 0) query = Query(grades_table) t = Transaction() records = {} seed(3562901) for i in range(0, 2000): key = 92106429 + i records[key] = [ key, randint(0, 20), randint(0, 20), randint(0, 20), randint(0, 20) ] query.insert(*records[key]) #t.add_query(query.insert, *records[key]) #FIXME uncomment later keys = sorted(list(records.keys())) for key in keys: #record = query.select(key, 0, [1, 1, 1, 1, 1])[0]
from lstore.db import Database from lstore.query import Query from lstore.transaction import Transaction from random import choice, randint, sample, seed # Student Id and 4 grades db = Database() db.open('~/ECS165') grades_table = db.get_table('Grades') query = Query(grades_table) t = Transaction() # repopulate with random data records = {} seed(3562901) for i in range(0, 2000): key = 92106429 + i records[key] = [ key, randint(0, 20), randint(0, 20), randint(0, 20), randint(0, 20) ] keys = sorted(list(records.keys())) for _ in range(2): for key in keys: for j in range(1, grades_table.num_columns): value = randint(0, 20)