Size: a a a

2020 June 08

DS

Dmitry Sharonov in Tarantool
кажется что вам выгоднее гетать, да
источник

DS

Dmitry Sharonov in Tarantool
Guram Savinov
ну да, я за этим и пришел выяснить:
[get без delete] vs [delete отсутсвующей в спейсе записи]
fiber = require('fiber')
box.cfg{}
t = box.schema.space.create('t', {if_not_exists=true})
t:create_index('pk', {if_not_exists=true})
for i = 1,10000 do
   t:replace{i}
end

local keys = {}
for i=1,50000 do
   table.insert(keys, math.random(1, 50000))
end

tm = fiber.time()
for _, key in ipairs(keys) do
   if t:get(key) ~= nil then
       t:delete(key)
   end
end
collectgarbage()
print(fiber.time()-tm)
источник

DS

Dmitry Sharonov in Tarantool
можете потюнить бенч под ваши цифры
источник

DS

Dmitry Sharonov in Tarantool
размеры туплов, ключей, и процент попаданий
источник

DS

Dmitry Sharonov in Tarantool
Dmitry Sharonov
fiber = require('fiber')
box.cfg{}
t = box.schema.space.create('t', {if_not_exists=true})
t:create_index('pk', {if_not_exists=true})
for i = 1,10000 do
   t:replace{i}
end

local keys = {}
for i=1,50000 do
   table.insert(keys, math.random(1, 50000))
end

tm = fiber.time()
for _, key in ipairs(keys) do
   if t:get(key) ~= nil then
       t:delete(key)
   end
end
collectgarbage()
print(fiber.time()-tm)
конретно этот дает на моем ноуте 0.2 сек с гетами, и 1.5 - с делитами
источник

DS

Dmitry Sharonov in Tarantool
можно даже наверное на стековерфлоу с этим сходить
источник

MM

Max Melentiev in Tarantool
Pavel
Привет.  Кто-нибудь может поделиться опытом хранения длинных строк?
Как дела с производительностью?
Тюнили аллокатор?
Есть смысл держать жирные поля в отдельном спейсе?

По примеркам, 150кБ на такое поле должно хватить с хорошим запасом.
удалять/обновлять часто собираетесь?
источник

DS

Dmitry Sharonov in Tarantool
Pavel
Привет.  Кто-нибудь может поделиться опытом хранения длинных строк?
Как дела с производительностью?
Тюнили аллокатор?
Есть смысл держать жирные поля в отдельном спейсе?

По примеркам, 150кБ на такое поле должно хватить с хорошим запасом.
а вы когда из спейса читаете, вам это поле обычно нужно или нет?
источник

P

Pavel in Tarantool
удаление редкий кейс, чаще обновление
источник

P

Pavel in Tarantool
Dmitry Sharonov
а вы когда из спейса читаете, вам это поле обычно нужно или нет?
скорее нет, чем да, большинство запросов, скорее всего, будет на данные, которые лежат в соседних полях
источник

DS

Dmitry Sharonov in Tarantool
Pavel
удаление редкий кейс, чаще обновление
апдейты или реплейсы?
источник

P

Pavel in Tarantool
Dmitry Sharonov
апдейты или реплейсы?
реплейсы, мастер-мастер же
источник

DS

Dmitry Sharonov in Tarantool
Pavel
скорее нет, чем да, большинство запросов, скорее всего, будет на данные, которые лежат в соседних полях
вот эти 150к вам будут декодиться и приезжать в каждом запросе
источник

DS

Dmitry Sharonov in Tarantool
Pavel
реплейсы, мастер-мастер же
а меняете это поле иди лругие?)
источник

DS

Dmitry Sharonov in Tarantool
короче пока все указывает на отдельный спейс
источник

P

Pavel in Tarantool
Dmitry Sharonov
вот эти 150к вам будут декодиться и приезжать в каждом запросе
да, я по этому и подумал, что будет лучше, если положить это поле отдельно
источник

DS

Dmitry Sharonov in Tarantool
Pavel
да, я по этому и подумал, что будет лучше, если положить это поле отдельно
на чтение еще можно обойти хранимками конечно
источник

DS

Dmitry Sharonov in Tarantool
но это тоже странновато
источник

P

Pavel in Tarantool
Dmitry Sharonov
на чтение еще можно обойти хранимками конечно
какого плана?
получить данные из двух спейсов и положить в одну табличку?
источник

DS

Dmitry Sharonov in Tarantool
Pavel
какого плана?
получить данные из двух спейсов и положить в одну табличку?
наоборот - если хранить в одном спейсе, но читать хранимками только нужные поля
источник