Home > Blogs > VMware vFabric Blog


Load 8 Million Rows in 88 Seconds – NewSQL Speed

At some point, any data modernization project is going to require a load of legacy data. With an in-memory, distributed data store like SQLFire, customers often ask (like in this case) about load times because they can be sitting on 50-100 GB of data and don’t want to wait days. For those unfamiliar with NewSQL databases, this post should give you a good sense of how we loaded 8 million rows in 88 seconds. The test shows how we should be able to load roughly 40GB of data in about 1 hour.

For Java developers who want ideas about speeding up large volumes of calculations, transforms, or validations, you may want to consider a previous post, where SQLFire is used with Spring Batch.

With SQLFire, we take a multi-threaded load approach from a CSV file. Below, I’ve outlined 8 steps to the load strategy with an explanation of why things were done.

Please note:

  • This is based on SQLFire 1.0.3.
  • In this setup we have 2 VM’s each with 18G of memory, sharing the same home directory as well as having separate disks for their own disk stores/log files.

1. Setup SQLFire in your path as shown below.

export PATH=/export/w2-gst-cert-20a/users/swale/sqlfire/build-artifacts/linux/product-sqlf/bin:$PATH

2. On VM1 start a locator as shown below

sqlf locator start -J-javaagent:/export/w2-gst-cert-20a/users/swale/sqlfire/build-
artifacts/linux/product- sqlf/lib/sqlfire.jar -peer-discovery-address=w2-gst-cert-21 -peer-discovery-
port=41111 -client-bind- address=w2-gst-cert-21 -client-port=1527 -dir=/w2-gst-cert-
21a/users/papicella/locator &

3. On both VM1 and VM2 start 2 SQLFire server nodes as shown below.
These servers have 18G of memory. VM2 is where the locator process was started. The output below is just showing what the scripts you need to run those to actually start the servers.

[Thu Jul 12 21:24:47 papicella@:~/pas/demo/load-demo ] $ cat start-server-w2-gst-cert-20.sh sqlf
server start -J-javaagent:/export/w2-gst-cert-20a/users/swale/sqlfire/build-artifacts/linux/product-
sqlf/lib/sqlfire.jar -server-groups=MYGROUP -initial-heap=8024m -max-heap=8024m -locators=w2- gst-cert-
21[41111] -client-bind-address=w2-gst-cert-20 -client-port=1527 -dir=/w2-gst-cert-20a/users/
papicella/server1 &

[Thu Jul 12 21:27:19 papicella@:~/pas/demo/load-demo ] $ cat start-server-w2-gst-cert-21.sh sqlf server start -J-javaagent:/export/w2-gst-cert-20a/users/swale/sqlfire/build-artifacts/linux/product- sqlf/lib/sqlfire.jar -server-groups=MYGROUP -initial-heap=8024m -max-heap=8024m -locators=w2- gst-cert-21[41111] -client-bind-address=w2-gst-cert-21 -client-port=1528 -dir=/w2-gst-cert-21a/users/ papicella/server2 &

4. Create a diskstore using SQL as shown below.

CREATE DISKSTORE STORE1 WRITEBUFFERSIZE 19292393;

5. Set a global eviction policy for tables in the group “MYGROUP”.

call sys.set_eviction_heap_percentage_sg (85, 'MYGROUP');

6. Create a table as shown below.
We are using a separate disk store for persistence and any overflow data will simply be removed from memory and not written to disk as persistence is enabled here. This table will asynchonously write it’s changes to the disk store so that it only has to do the memory insert prior to moving onto the next change.

drop table emp;

CREATE TABLE emp
(empno integer NOT NULL primary key,
ename varchar(20),
hiredate date,
deptno int
)
SERVER GROUPS (MYGROUP)
EVICTION BY LRUHEAPPERCENT EVICTACTION OVERFLOW
PARTITION BY COLUMN (empno)
REDUNDANCY 1
PERSISTENT 'STORE1' ASYNCHRONOUS;

7. Pre-create buckets ready for loading data by running the SQL as shown below.
If this isn’t done, then it will be done the first time an insert occurs where no buckets exist automatically by SQLFire.

call sys.create_all_buckets('APP.EMP');

Note: You can do this after the load as shown below.

call sys.rebalance_all_buckets()

8. Run a script to load the data showing output has taken 88 seconds to load 8 million rows into a 2 node cluster.
In this example, we load a CSV file named “EMP.dat” which has 8 million rows with data as follows and a disk size of 371M.

Example:

1,LkrpCkpGQpsUvZrFWAic,2012-02-29 05:35:10,2288856
2,gfbuiiWcUxoDOgeHuth,2012-01-10 12:57:18,1243600
3,GnR,2012-03-04 20:47:06,1533872
4,uxaGakuW,2012-03-17 20:57:34,2451659
5,coIrAvnPtvOZJirnea,2012-01-29 15:36:20,3731769
6,FJvnIjy,2012-03-24 07:37:59,4137455
7,rjnWsfbLldRtUSBDdZew,2012-01-24 13:09:22,3416189
8,DpbvPBkalbuZbBItgoJp,2012-03-28 13:41:56,6497992
9,jaba,2012-01-30 00:56:13,151525
10,EkDdiPeHBn,2012-04-02 12:05:25,630473
.....

The “EMP.dat” exists on only VM2 so we need to ensure we connect only to that SQLFire server node and ensure it’s the only one responsible for the load given EMP.dat only exists on that server. To do that we use load-balance=false and we use read-timeout=0 to ensure the client doesn’t time out if the load takes longer then 5 minutes.

loadEmp.sh Script

sqlf <<!
connect client 'w2-gst-cert-21:1528;load-balance=false;read-timeout=0';
ELAPSEDTIME on;
call syscs_util.import_table_ex('APP' /* schema */,
'EMP' /* table */,
'/w2-gst-cert-21a/users/papicella/data/EMP.dat' /* file path as seen by server */,
',' /* field separator */,
NULL,
NULL,
0,
0 /* don't lock the table */,
6 /* number of threads */,
0,
NULL /* custom class for data transformation or NULL to use the default inbuilt Import class */,
NULL);
!

Note: The number of threads set at 6 is more then enough. Making this to high can have an adverse effect here. Six is a perfect amount for a multi thread load test.

[Thu Jul 12 19:03:23 papicella@:/w2-gst-cert-21a/users/papicella/data ] $ ./loadEMP.sh
sqlf version 10.4
sqlf> sqlf> sqlf> > > > > > > > > > > Statement executed.
ELAPSED TIME = 88324 milliseconds
sqlf>
[Thu Jul 12 19:04:58 papicella@:/w2-gst-cert-21a/users/papicella/data ] $

Finally run a query as follows showing that indeed the data has been loaded and what the overhead of storing 8,000,000 rows was on the system for both nodes from a memory perspective.

sqlf> select sqlentity, memory, substr(id, 1, 50) "Id" FROM sys.memoryAnalytics -- SQLFIRE-PROPERTIES sizerHints=withMemoryFootPrint;
SQLENTITY
|MEMORY
|Id
------------------------------------------------------------------------------------------------------------------------------
APP.EMP (Entry Size, Value Size, Row Count) | 832000000,204019274,8000000 | w2-gst-cert-21(10674)<v2>:2810/48871

APP.EMP (sqlfire,gemfire,others) | 241842808,229176368,196449984 (667469160 = 636.55 mb) | w2-gst-cert-21(10674)<v2>:2810/48871

APP.EMP (Entry Size, Value Size, Row Count) | 832000000,204019274,8000000 | w2-gst-cert-20(8550)<v1>:35007/36633

APP.EMP (sqlfire,gemfire,others) | 277524448,262689608,225528376 (765742432 = 730.27 mb) | w2-gst-cert-20(8550)<v1>:35007/36633

4 rows selected
ELAPSED TIME = 149673 milliseconds
sqlf>

More Information

A. Row Overhead

Currently SQLFire overhead for an entry that is persistent is around 100 bytes so that adds to around 800M overhead for 8,000,000 rows. This needs to be factored in when trying to determine memory size for tables when using persistence.

B. Number of threads to load with

When using syscs_util.import_table_ex it is best to not use more than 6 threads for the load. The benefit won’t increase if you add more threads then 6. The example below simply uses 6 threads to load the data into SQLFire, which is the most efficient way.

sqlf < connect client 'w2-gst-cert-21:1528;load-balance=false;read-timeout=0';
ELAPSEDTIME on;
call syscs_util.import_table_ex('APP' /* schema */,
'EMP' /* table */,
'/w2-gst-cert-21a/users/papicella/data/EMP.dat' /* file path as seen by server */,
',' /* field separator */,
NULL,
NULL,
0,
0 /* don't lock the table */,
6 /* number of threads */,
0,
NULL /* custom class for data transformation or NULL to use the default inbuilt Import class */);
!

C. Connecting as a client where the data file exists

In the example below we ensure that long running load clients don’t timeout. By default, they will timeout after 5 minutes so to avoid that we use read-timeout=0 for the connect string attribute. At the same time we want to do the load from only one client where the data file exists. In that case we ensure we connect to the client where the data file exists and turn load-balance off to ensure the other node doesn’t attempt to read the file as well.

sqlf < connect client 'w2-gst-cert-21:1528;load-balance=false;read-timeout=0';
ELAPSEDTIME on;
call syscs_util.import_table_ex('APP' /* schema */,
'EMP' /* table */,
'/w2-gst-cert-21a/users/papicella/data/EMP.dat' /* file path as seen by server */,
',' /* field separator */,
NULL,
NULL,
0,
0 /* don't lock the table */,
6 /* number of threads */,
0,
NULL /* custom class for data transformation or NULL to use the default inbuilt Import class */);
!

Screen shot 2012-08-14 at 8.30.40 PM About the Author: Pas Apicella has been with the IT industry for 16 years. He graduated from RMIT University Melbourne with a bachelor of computer science. He started out writing PLSQL web based packages for an online internet directories site. Then, he moved to java where he spent 11 years with Oracle in various roles. Pas has been with VMware since 2011 and works as a systems engineer on the vFabric Cloud Application Platform team.

84 thoughts on “Load 8 Million Rows in 88 Seconds – NewSQL Speed

  1. wreckseal

    wow. great!

    Reply
  2. kamagra reviews

    I don’t even know the way I stopped up right here, but I believed this publish was good.
    I don’t understand who you are however certainly you are going
    to a famous blogger when you aren’t already.
    Cheers!

    Reply
  3. scentsy

    Hi there, just became alert to your blog through Google,
    and found that it is really informative. I’m gonna watch out for brussels.
    I’ll appreciate if you continue this in future. A lot of people will be benefited from your writing.
    Cheers!

    Here is my site – scentsy

    Reply
  4. Pampered Chef

    Hello, i read your blog from time to time and i own a
    similar one and i was just wondering if you get a lot of spam responses?
    If so how do you reduce it, any plugin or anything you can recommend?
    I get so much lately it’s driving me crazy so any help is very much appreciated.

    Also visit my weblog; Pampered Chef

    Reply
  5. sbobet

    Hi there, this weekend is pleasant for me, since this moment i am reading this impressive educational
    paragraph here at my residence.

    Here is my weblog … sbobet

    Reply
  6. Erlinda

    Excellent post. I definitely appreciate this site. Keep
    it up!

    Reply
    1. اجاره آپارتمان مبله در اصفهان

      اسکان در اصفهان و اقامت موقت در اصفهان وآشنایی با شهر اصفهان با سایت بهین اسکان اجاره کوتاه مدت آپارتمان در اصفهان قیمت اجاره آپارتمان مبله در اصفهان خانه اجاره ای یک شبه در اصفهان خانه اجاره ای روزانه در اصفهان نزدیک سی وسه پل اجاره سوئیت ارزان در اصفهان قیمت کرایه اتاق در اصفهان اجاره خانه مجردی در اصفهان اجاره اتاق در اصفهان اجاره آپارتمان مبله در اصفهان isfahan province, isfahanخانه اجاره ای یک شبه در اصفهان خانه اجاره ای برای مسافران در اصفهان خانه اجاره ای روزانه در اصفهان نزدیک سی وسه پل اجاره خانه دو روزه در اصفهان قیمت خانه اجاره ای برای مسافران در اصفهان اجاره کوتاه مدت اصفهان اجاره سوئیت ارزان در اصفهان اجاره اتاق در اصفهان قیمت کرایه اتاق در اصفهان سایت رزرو اسکان فرهنگیان ،سامانه اسکان فرهنگیان در شهر های مختلف ایران،سایتی برای رزرو اینترنتی اجاره آپارتمان مبله در اصفهان ستاد اسکان فرهنگیان

      Reply
  7. sbobet

    Wow, this paragraph is fastidious, my sister is analyzing such things, thus I am going to
    let know her.

    Take a look at my web-site … sbobet

    Reply
  8. sbobet

    obviously like your web-site however you need to take a look at the spelling on quite a
    few of your posts. Several of them are rife with spelling issues and I find it very
    bothersome to inform the truth nevertheless I will
    definitely come again again.

    Here is my site :: sbobet

    Reply
    1. وکیل خوب در اصفهان

      بهترین وکیل دیوان عدالت اداری، اسامی وکلای دیوان عدالت اداری، مشاور حقوقی دیوان عدالت اداری، قاضی بازنشسته دیوان عدالت اداری، مشاوره دیوان عدالت، وکیل امور اداری، مشاوره تلفنی دیوان عدالت اداری ، وکالت در دیوان عدالت اداری ، وکیل در اصفهان, وکیل دادگستری در اصفهان , وکیل خانم در اصفهان و وکیل زن ، وکیل امور خانواده در اصفهان , وکیل طلاق در اصفهان , بهترین وکیل اصفهان در زمینه خانواده در اصفهان , وکیل تخصصی خانواده و طلاق و مهریه در اصفهان , وکیل مرد تخصصی خانواده در اصفهان ، وکیل امور شهرداری در اصفهان , وکیل خوب در زمینه شهرداری در اصفهان , وکیل شهرداری در اصفهان , وکیل ارزان و وکیل شهرداری اصفهان , وکیل تخصصی تعزیرات در اصفهانانجام کلیه خدمات حقوقی توسط بهترین وکیل اصفهان : 09134744185

      Reply
  9. porn of youtube

    What’s up i am kavin, its my first time to commenting anywhere,
    when i read this piece of writing i thought i could also make comment due to
    this sensible article.

    Check out my blog: porn of youtube

    Reply
  10. ترجمه مقاله

    great point of view have been explained

    Reply
  11. طراحی سایت در کرج

    wow. great post. thanks

    Reply
  12. سئو

    so helpful, tnx

    Reply
  13. سئو سایت

    hi thanks for your best text

    Reply
  14. لوازم یدکی جرثقیل

    very good
    thankyou

    Reply
  15. شرکت خدماتی

    thank you

    Reply
  16. تخت خواب بادی

    nice post, tnx 😉

    Reply
  17. قالب سازی پلاستیک

    A good site to site claiming to check

    Reply
  18. تحصیل در آمریکا

    A good site to site claiming to check

    Reply
  19. طراحی بنر

    very good

    Reply
  20. طراحی سایت در زنجان

    nice post, tnx

    Reply
  21. یو پی اس

    http://finetco.ir/

    Reply
  22. تجهیزات آشپزخانه صنعتی

    hi thanks for this text

    Reply
  23. مهاجرت به کانادا

    thanks good luck

    Reply
  24. کرم دور چشم

    thankyou very good site

    Reply
  25. گ

    very nice text

    Reply
  26. تحقیقات بازار

    thanks very good

    Reply
  27. تجهیزات آشپزخانه صنعتی

    Thank you for Mtalbtvn.

    Reply
  28. فروش بک لینک

    good thanks very nice

    Reply
  29. مایکروسافت crm

    سلام و سپاس از سایت خوبتون. سال نو بر شما مبارک.

    Reply
  30. سکوبندی

    happy new year

    Reply
  31. پشم سنگ

    THANK YOU

    Reply
  32. گاوصندوق

    تبریک سال نو خدمت سایت مفیدتون.

    Reply
  33. کلاس آیلتس

    Very good. thank you so much

    Reply
  34. سمعک

    thank you
    good luck

    Reply
  35. نرم افزار CRM

    thanks

    Reply
  36. نرم افزار خدمات پس از فروش

    Very good

    Reply
  37. تور سرعین

    خیلی ممنون از مطالبتون.

    Reply
  38. تجهیزات آزمایشگاهی

    hi thanks for this text

    Reply
  39. کاندوم خاردار

    قطار مشهد

    Reply
  40. چیلر سانتریفیوژ

    ممنون بسیار عالی بود

    Reply
  41. دوربین کنفرانس

    با سلام و تشکر از سایت خوبتون خیلی عاااالی بود

    Reply
  42. فروش ساندویچ پانل

    good
    tnx

    Reply
  43. خرید کتاب کمک درسی

    ممنون نکات و اطلاعات خوبی بود

    Reply
  44. tour kish

    Hello
    Thank you for your article and information. I would like to introduce( https://xn--pgboj2f0xyg.sareeseir.com/ ) you to my tourism website

    Reply
  45. قیمت تلویزیون ال جی

    مثل همیشه بی نظیر

    Reply
  46. ساندویچ پانل

    Awesome !

    Reply
  47. ساندویچ پانل دیواری

    Thanks

    Reply
  48. ساندویچ پانل

    Great Job!

    Reply
  49. رژلب مک

    tanks for post

    Reply
  50. قیمت کولرگازی سامسونگ

    very good

    Reply
  51. اجاره خودرو

    yes you need a new strategy .

    Reply
  52. اجاره خودرو

    tanks for post

    Reply
  53. ساخت مهر

    Useful Thanks For Sharing This

    Reply
  54. طراحی سایت

    great post. thanks.

    Reply
  55. دستگاه فیزیوتراپی خانگی

    Thank you for helping me improve.

    Reply
  56. عکس تمامی پرچم های دنیا

    عکس پرچم کشورهای دنیا

    Reply
  57. ساندویچ پانل

    Thanks

    Reply
  58. نماینده موتوژن در قزوین

    Good post

    Reply
  59. تعمیر کامپیوتر در محل

    Thanks

    Reply
  60. نمایندگی شارپ

    very good

    Reply
  61. نمایندگی اچ پی

    Thanks

    Reply
  62. فروش آنتی ویروس

    very good

    Reply
  63. نمایندگی شارپ

    Thanks

    Reply
  64. امداد کامپیوتر

    very good

    Reply
    1. کف سازی بتنی صنعتی

      جدید ترین روش اجرای بتن سخت صنعتی و ارائه بهترین قیمت بتن سخت/فروش بتن اکسپوز و مجری بتن اکسپوز اجرای بتن اکسپوز کف و بتن اکسپوز رنگی نما در شیراز ،اصفهان،تهران/اجرای بتن استامپی دکوراتیو با قالب یا بتن منقش دکوراتیواجرای کفسازی بتنی صنعتی برای سوله و پارکینگ بتن منقش اجرای کفپوش اپوکسی صنعتی

      Reply
  65. فروشگاه کامپیوتر

    thanks vmware blig

    Reply
  66. تبلیغ رایگان

    تبلیغ رایگان

    Reply
  67. تعمیر پکیج

    Awesome post ! Thnks

    Reply
  68. تعمیر صندلی اداری

    we take a multi-threaded load approach from a CSV file. Below, I’ve outlined 8 steps to the load strategy with an explanation of why things were done.

    Reply
  69. تعمیرات پکیج ایران رادیاتور

    Thanks

    Reply
    1. حفاظ روی دیوار

      بهترین حفاظ برای دیوار ساختمان حفاظ شاخ گوزنی دارای شاخه های در هم تنیده ای همانند خار یا شاخ گوزن می باشد. این حفاظ ها از جدید ترین مدل های حفاظ و صد البته از بهترین نوع آن به عناون حفاظ دیوار ساختمان است. در بعضی موارد با توجه به محل قرار گیری حفاظ می توان از آن برای حفاظ پنجره هم استفاده کرد. حفاظ شاخ گوزنی هم به عنوان نرده کاربرد دارد و هم امنیت ساختمان را حفظ می کند. این حفاظ های زیبا، علاوه بر حفظ جذابیت و زیبایی خود، بسیار ایمن هستند. چرا که عرض بلندی دارند که بیشترین میزان عرض دیوار را تحت پوشش خود دارند. پس جایی برای قرار دادن دست و پا ندارند. از این رو احتمال سرقت بسیار پایین می آید. وجود خارها و شاخه های در هم گره خورده که بسیار تیز هستند، امکان هر گونه دزدی و سرقت را از بین می برد. زیرا در صورتی که فردی از این حفاظ بالا رود، خارها و شاخه های تیز موجب بریده شدن بدن و آسیب رساندن به وی می شوند. این حفاظ ها کیفیت و دوام بالایی دارند و شما می توانید تا سالیان درازی از این حفاظ ها استفاده کنید.

      Reply
  70. تعمیرات پکیج

    Good site

    Reply
  71. تعمیرات پکیج بوتان

    Ok

    Reply
  72. آرایشی و بهداشتی

    great article . thanks i’d like that men

    Reply
  73. اجاره ماشین عروس

    nice post, thank you

    Reply
  74. اجاره ماشین عروس

    great article . thanks i’d like that men

    Reply
    1. درب آکاردئونی آهنی

      تولیدات ما شامل درب آکاردئونی ، درب کشویی آهنی ، انواع حفاظ پنجره ، درب های آهنی حیاط و پارکینگ و مغازه و انواع محافظ اهنی دیوار ،
      حفاظ دیوار در حال حاضر حفاظ هایی با عنوان حفاظ روی دیوار در بازار موجود هستند که بیشتر به عنوان نرده کاربرد دارند و برای استفاده به عنوان حفاظ روی دیوار حیاط یا ساختمان مناسب نیستند. این نوع حفاظ روی دیوار سنتی -که با عنوان حفاظ سرنیزه ای شناخته می شوند- معایب زیادی دارند. مهم ترین عیب آنها این است که زیبا نیستند. به علاوه دقیقا مانند نرده های زندان بلند، زشت و ملالت آور هستند. حفاظ های نرده ای رایج، ایمن نیستند. چرا که به راحتی اشخاص می توانند از آن عبور کنند. امروزه برای برطرف کردن این مشکلات، نسل جدیدی از حفاظ ها ساخته شده اند که به حفاظ بوته ای یا شاخ گوزنی شهرت دارند. نرده حفاظ روی دیوار مانند حفاظ شاخ گوزنی میباشد.درب آکاردئونی به درب هایی میگویند که به‌صورت تاشو و ریلی باز و بسته می‌شود.

      Reply
  75. خرید کیف

    thank you

    Reply
  76. آنتی ویروس تحت شبکه

    Bravo ! Votre blog est l’un

    Reply
  77. فروش اسانس عطر

    ماه7 – فروش عمده اسانس عطر – عطر گرمی
    ماه7 یک فروشگاه آنلاین در زمینه فروش اسانس عطر و ادکلن اصل به صورت خالص وگرمی می باشد. فروشگاه اینترنتی ماه7 به تناسب خواسته ‌های مخاطب، آغازگر نسل جدیدی از فروشگاه‌های اینترنتی با تمرکز ویژه روی فروش اسانس عطر و ادکلن.

    Reply
    1. طراحی سایت اصفهان ارزان

      بهینه سازی سایت در اصفهان سئو سایت در اصفهان سئو اصفهان طراحی سایت اصفهان ارزان طراحی وب سایت در اصفهان قیمت طراحی سایت اصفهان

      Reply
  78. صنعت و هنر تجسم

    so helpful, tnx

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

*