Можно ли сделать добавление данных с помощью ScyllaDB для python более эффективным? - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь использовать ScyllaDB с python, но это довольно медленно.Когда я запускаю код экземпляра, показанный внизу, я получаю:

26:23:109998
26:23:112695

Я забочусь о наилучшей возможной производительности, к сожалению, это время добавления данных в базу данных слишком длинное.Есть ли способ ускорить этот процесс?

        print(datetime.now().strftime("%M:%S:%f"))
        session.execute(
            """
            INSERT INTO log (id, date, message)
            VALUES (now(), %s, %s)
            """,
            (date, message)
        )
        print(datetime.now().strftime("%M:%S:%f"))

ОБНОВЛЕНИЕ

По рекомендации в этой теме я решил использовать подготовленные заявления и партии в соответствии софициальная документация для улучшения производительности добавления данных в ScyllaDB.Мой код на данный момент выглядит так, как показано ниже, однако эффективность существенно не изменилась.Любые другие идеи?

print("time 0: " + str(datetime.now()))
query = "INSERT INTO message (id, message) VALUES (uuid(), ?)"
prepared = session.prepare(query)

for key in range(100):

    print(key)

    try:

        batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
        for key in range(100):

            batch.add(prepared, ("example message",))

        session.execute(batch)

    except Exception as e:
        print("An error occured : " + str(e))
        pass

print("time 1: " + str(datetime.now()))

После запуска этого исходного кода результат выглядит следующим образом:

test 0: 2018-06-19 11:10:13.990691
0
1
...
41
cAn error occured : Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out for messages.message - received only 1 responses from 2 CL=QUORUM." info={'write_type': 'BATCH', 'required_responses': 2, 'consistency': 'QUORUM', 'received_responses': 1}
42
...
52                                                                                                                                                                             An error occured : errors={'....0.3': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=.....0.3
53
An error occured : Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out for messages.message - received only 1 responses from 2 CL=QUORUM." info={'write_type': 'BATCH', 'required_responses': 2, 'consistency': 'QUORUM', 'received_responses': 1}
54
...
59
An error occured : Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out for messages.message - received only 1 responses from 2 CL=QUORUM." info={'write_type': 'BATCH', 'required_responses': 2, 'consistency': 'QUORUM', 'received_responses': 1}
60
61
62
...
69
70
71
An error occured : errors={'.....0.2': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=.....0.2
72
An error occured : errors={'....0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=....0.1
73
74
...
98
99
test 1: 2018-06-19 11:11:03.494957

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Начните с использования подготовленных операторов, затем выполните несколько операторов параллельно.

0 голосов
/ 07 июня 2018

Есть несколько факторов, которые могут ограничить вашу производительность.Начиная с настройки серверов Scylla.Например, если вы создали кластер с очень маленькими, медленными сетевыми экземплярами.Продолжая, с клиентской HW и рабочей нагрузкой на сам экземпляр, принимая во внимание количество соединений на хост, количество потоков на соединение и другие перестраиваемые параметры со стороны драйвера / коннектора.Наконец, с использованием более эффективных способов записи информации в Scylla с использованием подготовленных операторов.

Будет полезно узнать больше о среде, которую вы используете, и о цели рабочей нагрузки, чтобы рекомендовать более конкретный курс обучения.действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...