Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-27832

N1QL: XATTR lookups are more expensive than document lookups

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Fix
    • Major
    • 5.5.0
    • 5.5.0
    • query
    • CentOS 7.4
      E5-2680 v3 (48 vCPU)

    Description

      Setup:

      • 4 KV nodes, 1 Query node
      • 1 bucket
      • Read-only workload
      • 960 client threads (running on two separate client boxes)

      I am going to compare two similar queries:

      SELECT * FROM `bucket-1` USE KEYS[$1];"
      

      and

      SELECT META().xattrs.`user` FROM `bucket-1` USE KEYS[$1];"
      

      Actual documents and XATTR objects ("user") have absolutely the same content.

      This is what we observe:

      • Regular fetches: up to 84K queries/sec
      • XATTR fetches: up to 67K queries/sec (20% difference)

      Some graphs: http://cbmonitor.sc.couchbase.com/reports/html/?snapshot=iris_550-1766_access_3294&snapshot=iris_550-1766_access_f930&label=doc&label=xattr

      Usually SUBDOC requests are slightly slower than normal GET requests. Here is comparison of KV timings:

      The following data is collected for "GET"
      [   0 -    9]us ( 74.19%)  18593206 | ############################################
      [  10 -   19]us ( 99.01%)   6218721 | ##############
      [  20 -   29]us ( 99.88%)    219340 | 
      [  30 -   39]us ( 99.97%)     22385 | 
      [  40 -   49]us ( 99.99%)      3913 | 
      [  50 -   59]us ( 99.99%)       698 | 
      [  60 -   69]us ( 99.99%)       321 | 
      [  70 -   79]us ( 99.99%)       127 | 
      [  80 -   89]us ( 99.99%)        55 | 
      [  90 -   99]us ( 99.99%)        29 | 
      [ 100 -  109]us ( 99.99%)        18 | 
      [ 110 -  119]us ( 99.99%)        41 | 
      [ 120 -  129]us ( 99.99%)        35 | 
      [ 130 -  139]us ( 99.99%)        49 | 
      [ 140 -  149]us ( 99.99%)        60 | 
      [ 150 -  159]us ( 99.99%)       271 | 
      [ 160 -  169]us (100.00%)       286 | 
      [ 170 -  179]us (100.00%)       155 | 
      [ 180 -  189]us (100.00%)        74 | 
      [ 190 -  199]us (100.00%)        49 | 
      [ 200 -  209]us (100.00%)        47 | 
      [ 210 -  219]us (100.00%)        31 | 
      [ 220 -  229]us (100.00%)        32 | 
      [ 230 -  239]us (100.00%)        31 | 
      [ 240 -  249]us (100.00%)        36 | 
      [ 250 -  259]us (100.00%)        26 | 
      [ 260 -  269]us (100.00%)        23 | 
      [ 270 -  279]us (100.00%)        26 | 
      [ 280 -  289]us (100.00%)        40 | 
      [ 290 -  299]us (100.00%)        24 | 
      [ 300 -  309]us (100.00%)        27 | 
      [ 310 -  319]us (100.00%)        34 | 
      [ 320 -  329]us (100.00%)        35 | 
      [ 330 -  339]us (100.00%)        24 | 
      [ 340 -  349]us (100.00%)        20 | 
      [ 350 -  359]us (100.00%)        15 | 
      [ 360 -  369]us (100.00%)        18 | 
      [ 370 -  379]us (100.00%)        25 | 
      [ 380 -  389]us (100.00%)        16 | 
      [ 390 -  399]us (100.00%)         7 | 
      [ 400 -  409]us (100.00%)        17 | 
      [ 410 -  419]us (100.00%)        13 | 
      [ 420 -  429]us (100.00%)        15 | 
      [ 430 -  439]us (100.00%)        16 | 
      [ 440 -  449]us (100.00%)        13 | 
      [ 450 -  459]us (100.00%)        11 | 
      [ 460 -  469]us (100.00%)         6 | 
      [ 470 -  479]us (100.00%)        10 | 
      [ 480 -  489]us (100.00%)         7 | 
      [ 490 -  499]us (100.00%)         8 | 
      [ 500 -  509]us (100.00%)         8 | 
      [ 510 -  519]us (100.00%)         8 | 
      [ 520 -  529]us (100.00%)        12 | 
      [ 530 -  539]us (100.00%)        10 | 
      [ 540 -  549]us (100.00%)         8 | 
      [ 550 -  559]us (100.00%)         7 | 
      [ 560 -  569]us (100.00%)         9 | 
      [ 570 -  579]us (100.00%)         7 | 
      [ 580 -  589]us (100.00%)         4 | 
      [ 590 -  599]us (100.00%)         1 | 
      [ 600 -  609]us (100.00%)         7 | 
      [ 610 -  619]us (100.00%)         1 | 
      [ 620 -  629]us (100.00%)         4 | 
      [ 630 -  639]us (100.00%)         2 | 
      [ 640 -  649]us (100.00%)         4 | 
      [ 650 -  659]us (100.00%)         1 | 
      [ 660 -  669]us (100.00%)         1 | 
      [ 670 -  679]us (100.00%)         1 | 
      [ 680 -  689]us (100.00%)         1 | 
      [ 700 -  709]us (100.00%)         1 | 
      [ 710 -  719]us (100.00%)         1 | 
      [ 740 -  749]us (100.00%)         3 | 
      [ 750 -  759]us (100.00%)         1 | 
      [ 760 -  769]us (100.00%)         1 | 
      [ 770 -  779]us (100.00%)         1 | 
      [ 790 -  799]us (100.00%)         1 | 
      [ 800 -  809]us (100.00%)         3 | 
      [ 810 -  819]us (100.00%)         4 | 
      [ 820 -  829]us (100.00%)         1 | 
      [ 830 -  839]us (100.00%)         2 | 
      [ 880 -  889]us (100.00%)         2 | 
      [ 900 -  909]us (100.00%)         1 | 
      [ 930 -  939]us (100.00%)         1 | 
      [ 940 -  949]us (100.00%)         1 | 
      [ 950 -  959]us (100.00%)         1 | 
      [ 960 -  969]us (100.00%)         1 | 
      [ 970 -  979]us (100.00%)         2 | 
      [ 980 -  989]us (100.00%)         1 | 
      [   1 -    1]ms (100.00%)        10 | 
      Total: 25060621 operations
      

      The following data is collected for "SUBDOC_MULTI_LOOKUP"
      [  20 -   29]us (  0.00%)        9 | 
      [  30 -   39]us ( 48.56%)  9820216 | ############################################
      [  40 -   49]us ( 78.44%)  6042809 | ###########################
      [  50 -   59]us ( 95.82%)  3515808 | ###############
      [  60 -   69]us ( 98.91%)   625144 | ##
      [  70 -   79]us ( 99.59%)   137577 | 
      [  80 -   89]us ( 99.74%)    31079 | 
      [  90 -   99]us ( 99.84%)    19812 | 
      [ 100 -  109]us ( 99.91%)    13942 | 
      [ 110 -  119]us ( 99.94%)     6372 | 
      [ 120 -  129]us ( 99.95%)     2454 | 
      [ 130 -  139]us ( 99.96%)     1274 | 
      [ 140 -  149]us ( 99.97%)      810 | 
      [ 150 -  159]us ( 99.97%)      605 | 
      [ 160 -  169]us ( 99.97%)      465 | 
      [ 170 -  179]us ( 99.97%)      284 | 
      [ 180 -  189]us ( 99.97%)      319 | 
      [ 190 -  199]us ( 99.98%)      419 | 
      [ 200 -  209]us ( 99.98%)      552 | 
      [ 210 -  219]us ( 99.98%)      617 | 
      [ 220 -  229]us ( 99.98%)      427 | 
      [ 230 -  239]us ( 99.98%)      305 | 
      [ 240 -  249]us ( 99.99%)      182 | 
      [ 250 -  259]us ( 99.99%)      157 | 
      [ 260 -  269]us ( 99.99%)      123 | 
      [ 270 -  279]us ( 99.99%)      125 | 
      [ 280 -  289]us ( 99.99%)       98 | 
      [ 290 -  299]us ( 99.99%)      110 | 
      [ 300 -  309]us ( 99.99%)      111 | 
      [ 310 -  319]us ( 99.99%)       97 | 
      [ 320 -  329]us ( 99.99%)       95 | 
      [ 330 -  339]us ( 99.99%)      100 | 
      [ 340 -  349]us ( 99.99%)       81 | 
      [ 350 -  359]us ( 99.99%)      116 | 
      [ 360 -  369]us ( 99.99%)      112 | 
      [ 370 -  379]us ( 99.99%)      127 | 
      [ 380 -  389]us ( 99.99%)      106 | 
      [ 390 -  399]us ( 99.99%)       69 | 
      [ 400 -  409]us ( 99.99%)       59 | 
      [ 410 -  419]us ( 99.99%)       47 | 
      [ 420 -  429]us ( 99.99%)       44 | 
      [ 430 -  439]us ( 99.99%)       59 | 
      [ 440 -  449]us (100.00%)       53 | 
      [ 450 -  459]us (100.00%)       41 | 
      [ 460 -  469]us (100.00%)       47 | 
      [ 470 -  479]us (100.00%)       43 | 
      [ 480 -  489]us (100.00%)       41 | 
      [ 490 -  499]us (100.00%)       44 | 
      [ 500 -  509]us (100.00%)       34 | 
      [ 510 -  519]us (100.00%)       37 | 
      [ 520 -  529]us (100.00%)       34 | 
      [ 530 -  539]us (100.00%)       25 | 
      [ 540 -  549]us (100.00%)       29 | 
      [ 550 -  559]us (100.00%)       30 | 
      [ 560 -  569]us (100.00%)       28 | 
      [ 570 -  579]us (100.00%)       24 | 
      [ 580 -  589]us (100.00%)       32 | 
      [ 590 -  599]us (100.00%)       24 | 
      [ 600 -  609]us (100.00%)       27 | 
      [ 610 -  619]us (100.00%)       25 | 
      [ 620 -  629]us (100.00%)       22 | 
      [ 630 -  639]us (100.00%)       22 | 
      [ 640 -  649]us (100.00%)       21 | 
      [ 650 -  659]us (100.00%)       21 | 
      [ 660 -  669]us (100.00%)       21 | 
      [ 670 -  679]us (100.00%)       13 | 
      [ 680 -  689]us (100.00%)       14 | 
      [ 690 -  699]us (100.00%)        7 | 
      [ 700 -  709]us (100.00%)       11 | 
      [ 710 -  719]us (100.00%)       14 | 
      [ 720 -  729]us (100.00%)       16 | 
      [ 730 -  739]us (100.00%)       11 | 
      [ 740 -  749]us (100.00%)        9 | 
      [ 750 -  759]us (100.00%)       10 | 
      [ 760 -  769]us (100.00%)       13 | 
      [ 770 -  779]us (100.00%)        5 | 
      [ 780 -  789]us (100.00%)        9 | 
      [ 790 -  799]us (100.00%)        9 | 
      [ 800 -  809]us (100.00%)        7 | 
      [ 810 -  819]us (100.00%)        6 | 
      [ 820 -  829]us (100.00%)        5 | 
      [ 830 -  839]us (100.00%)        8 | 
      [ 840 -  849]us (100.00%)        7 | 
      [ 850 -  859]us (100.00%)        6 | 
      [ 860 -  869]us (100.00%)        4 | 
      [ 870 -  879]us (100.00%)        3 | 
      [ 880 -  889]us (100.00%)        5 | 
      [ 890 -  899]us (100.00%)        1 | 
      [ 900 -  909]us (100.00%)        4 | 
      [ 910 -  919]us (100.00%)        1 | 
      [ 920 -  929]us (100.00%)        2 | 
      [ 930 -  939]us (100.00%)        5 | 
      [ 940 -  949]us (100.00%)        2 | 
      [ 950 -  959]us (100.00%)        3 | 
      [ 960 -  969]us (100.00%)        4 | 
      [ 970 -  979]us (100.00%)        3 | 
      [ 980 -  989]us (100.00%)        2 | 
      [ 990 -  999]us (100.00%)        4 | 
      [   1 -    1]ms (100.00%)       70 | 
      [   2 -    2]ms (100.00%)        1 | 
      Total: 20224336 operations
      

      However, 99.9% of SUBDOC_MULTI_LOOKUP requests take less than 110us. That is less than network latency anyway. I don't think the difference is crucial.

      CPU profiling (see attachments) indicates that Fetch with getSubDocFetchResults path is 2x more expensive than document fetches. There seem to be a higher GC overhead as well.

      Attachments

        1. cpu_doc.svg
          295 kB
        2. cpu_xattr.svg
          301 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            keshav Keshav Murthy
            pavelpaulau Pavel Paulau (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty