Commit Graph

4320 Commits

Author SHA1 Message Date
Alexander Kuzmenkov
8fd0810142
Update aggregating_merge_tree_simple_aggregate_function_string.xml
`system stop merges` w/o table name has global effect, so the rest of the tests is affected. Also `optimize` is more suitable here so that the end result is the same every time.
2020-11-30 12:31:30 +03:00
Azat Khuzhin
a3116d5614 Tune aggregating_merge_tree_simple_aggregate_function_string to make it faster 2020-11-21 12:08:59 +03:00
Azat Khuzhin
35231662b3 Improve performance of AggregatingMergeTree w/ SimpleAggregateFunction(String)
While reading from AggregatingMergeTree with
SimpleAggregateFunction(String) in primary key and
optimize_aggregation_in_order perf top shows:

    Samples: 1M of event 'cycles', 4000 Hz, Event count (approx.): 287759760270 lost: 0/0 drop: 0/0
      Children      Self  Shared Object         Symbol
    +   12.64%    11.39%  clickhouse            [.] memcpy
    +    9.08%     0.23%  [unknown]             [.] 0000000000000000
    +    8.45%     8.40%  clickhouse            [.] ProfileEvents::increment    # <-- this, and in debug it has not 0.08x overhead, but 5.8x overhead
    +    7.68%     7.67%  clickhouse            [.] LZ4_compress_fast_extState
    +    5.29%     5.22%  clickhouse            [.] DB::IAggregateFunctionHelper<DB::AggregateFunctionNullUnary<true, true> >::addFree

The reason is obvious, ProfileEvents is atomic counters (and also they
are nested):

<details>

```
    Samples: 7M of event 'cycles', 4000 Hz, Event count (approx.): 450726149337
    ProfileEvents::increment  /usr/bin/clickhouse [Percent: local period]
    Percent│
           │
           │
           │    Disassembly of section .text:
           │
           │    00000000078d8900 <ProfileEvents::increment(unsigned long, unsigned long)@@Base>:
           │    ProfileEvents::increment(unsigned long, unsigned long):
      0.17 │      push  %rbp
      0.00 │      mov   %rsi,%rbp
      0.04 │      push  %rbx
      0.20 │      mov   %rdi,%rbx
      0.17 │      sub   $0x8,%rsp
      0.26 │    → callq DB::CurrentThread::getProfileEvents
           │    ProfileEvents::Counters::increment(unsigned long, unsigned long):
      0.00 │      lea   0x0(,%rbx,8),%rdi
      0.05 │      nop
           │    unsigned long std::__1::__cxx_atomic_fetch_add<unsigned long, unsigned long>(std::__1::__cxx_atomic_base_impl<unsigned long>*, unsigned long, std::__1::memory_order):
      1.02 │      mov   (%rax),%rdx
     97.04 │      lock  add   %rbp,(%rdx,%rdi,1)
           │    ProfileEvents::Counters::increment(unsigned long, unsigned long):
      0.21 │      mov   0x10(%rax),%rax
      0.04 │      test  %rax,%rax
      0.00 │    → jne   78d8920 <ProfileEvents::increment(unsigned long, unsigned long)@@Base+0x20>
           │    ProfileEvents::increment(unsigned long, unsigned long):
      0.38 │      add   $0x8,%rsp
      0.00 │      pop   %rbx
      0.04 │      pop   %rbp
      0.38 │    ← retq
```

</details>

These ProfileEvents was ArenaAllocChunks (it shows ~1.5M events per
second), and the reason is that the table has
SimpleAggregateFunction(String) in PK, which requires Arena.
But most of the time there Arena wasn't even used, so avoid this cost by
re-creating Arena only if it was "used" (i.e. has new chunks).

Another possibility is to avoid populating Arena::head in ctor, but this
will make the Arena code more complex, so for now this was preferred.

Also as a long-term solution it worth looking at implementing them via
RCU (to move the extra overhead out from the write code path into read
side).
2020-11-19 23:06:12 +03:00
alesapin
0bc60e2d53
Merge pull request #17089 from ClickHouse/fix_ddl_worker_non_leader
Fix ON CLUSTER queries hung for non leader replicas
2020-11-18 10:21:35 +03:00
Vitaliy Zakaznikov
dbb5f6722e Moving to using TestFlows version 1.6.65
Fixing unstable test in tests/testflows/ldap/external_user_directory/tests/authentications.py
2020-11-17 20:22:43 -05:00
Nikita Mikhaylov
68b6f08e36
Merge pull request #16721 from nikitamikhaylov/parsing-constraints
Turn off parallel parsing when memory limit is small.
2020-11-17 17:37:14 +03:00
tavplubix
b251478d98
Merge pull request #17072 from ClickHouse/fix_crash_16944
Fix crash in CREATE TABLE AS
2020-11-17 12:51:37 +03:00
Nikolai Kochetov
86395e11a2
Merge pull request #17006 from azat/fix-distributed-queries-finish
Fix Distributed queries finishing (avoid connection resets)
2020-11-17 11:11:27 +03:00
alesapin
5dd32819f5 Merge branch 'master' into fix_ddl_worker_non_leader 2020-11-16 22:34:16 +03:00
alesapin
6759932c61 Remove accident changes 2020-11-16 15:49:08 +03:00
alesapin
f839742288 Add a test 2020-11-16 15:47:02 +03:00
tavplubix
fe64082371
Merge pull request #15977 from TCeason/add_sync_user_privs_exception
throw exception when mysql sync user privs error.
2020-11-16 14:13:10 +03:00
Alexander Tokmakov
8352e5d202 fix crash in CREATE AS 2020-11-16 13:14:12 +03:00
Nikolai Kochetov
00de84fbe3
Merge pull request #16610 from zhang2014/fix/ISSUES-16574
ISSUES-16574 try fix remote query failure when using 'if' suffix aggregate function
2020-11-16 12:41:14 +03:00
Nikolai Kochetov
684d649b70
Merge pull request #16928 from ClickHouse/fix-16580
Fix possible error Illegal type of argument for queries with ORDER BY.
2020-11-16 12:39:20 +03:00
tavplubix
88de1b052c
Merge pull request #16048 from ClickHouse/materialized-view-check-stack-size
Fix possible stack overflow in materialized views.
2020-11-16 12:02:27 +03:00
TCeason
45bacd6f74 Merge branch 'master' into add_sync_user_privs_exception 2020-11-16 12:59:44 +08:00
alexey-milovidov
0afa1b8fc4
Merge pull request #17044 from CurtizJ/remove-empty-parts-settings
Add setting remove_empty_parts
2020-11-15 23:06:44 +03:00
Nikolai Kochetov
0a1ba8095e
Merge pull request #16992 from ClickHouse/try-fix-ci-5
Trying to fix the unimportant "Arcadia" checks in the CI.
2020-11-15 20:18:13 +03:00
Anton Popov
de5ead0c40 add setting remove_empty_parts 2020-11-15 05:24:47 +03:00
Alexey Milovidov
df081e57cf Fix test 2020-11-14 23:22:15 +03:00
Alexey Milovidov
1991f1d827 Merge branch 'master' into amosbird-fixcrash 2020-11-14 23:19:57 +03:00
Azat Khuzhin
ed64f2ad67 Add a test for Distributed query finish does not produce any NETWORK_ERROR 2020-11-14 18:35:15 +03:00
alexey-milovidov
8ef4bfc0b5
Merge pull request #16968 from amosbird/blocktypemismatch
Fix missing conversion of unmutated parts
2020-11-14 17:16:51 +03:00
alexey-milovidov
66831d44d4
Merge pull request #16983 from ClickHouse/fix_my_flaky_tests
Trying to fix some flaky tests
2020-11-14 17:12:58 +03:00
Nikolai Kochetov
ea8f6fde99 Add test to skiplist. 2020-11-13 22:30:38 +03:00
Alexander Kuzmenkov
816a808922
Merge pull request #16821 from ClickHouse/aku/perf-threads
Try 12 threads max in perf test
2020-11-13 20:25:35 +03:00
Nikolai Kochetov
ed98b48845
Merge pull request #16618 from ClickHouse/actions-dag-f14
Actions dag 2
2020-11-13 18:34:51 +03:00
Nikolai Kochetov
257bbcafea Added test from #16588
(cherry picked from commit b5a8ef3ceb)
2020-11-13 17:46:23 +03:00
alesapin
14485238b1
Update 01040_dictionary_invalidate_query_switchover_long.sh 2020-11-13 16:28:04 +03:00
nikitamikhaylov
070d1bcdd0 Merge branch 'master' of github.com:ClickHouse/ClickHouse into parsing-constraints 2020-11-13 16:27:17 +03:00
alesapin
5ef2eaeeef Trying to fix some flaky tests 2020-11-13 16:25:18 +03:00
Nikolai Kochetov
b5a8ef3ceb Added test from #16588 2020-11-13 15:51:50 +03:00
ubuntu
f7b60c17f5 make test stable 2020-11-13 20:38:28 +08:00
alesapin
2760593940 Better test 2020-11-13 13:50:15 +03:00
Nikolai Kochetov
00e8c8a2f6 Skip test. 2020-11-13 12:28:21 +03:00
alesapin
e590a341e5 Add test 2020-11-13 11:45:51 +03:00
alesapin
8d3858fc22
Merge pull request #16895 from CurtizJ/remove-empty-parts
Remove empty parts after they were pruned by TTL [2]
2020-11-13 10:00:18 +03:00
taichong
829037b487 Merge branch 'add_sync_user_privs_exception' of https://github.com/TCeason/ClickHouse into add_sync_user_privs_exception 2020-11-13 13:26:19 +08:00
Alexander Kuzmenkov
e4dd68039e fix 2020-11-13 08:00:43 +03:00
Nikita Mikhaylov
33bada767c
Merge branch 'master' into parsing-constraints 2020-11-12 23:25:39 +03:00
alesapin
bbd85c3b2d
Merge pull request #16390 from ClickHouse/add_separate_pool_for_fetches
Add separate pool for fetches
2020-11-12 22:42:28 +03:00
Anton Popov
4cecd89e84 fix dropping of empty parts 2020-11-12 20:37:54 +03:00
Alexander Kuzmenkov
7313691140 Merge remote-tracking branch 'origin/master' into HEAD 2020-11-12 20:31:17 +03:00
alexey-milovidov
2151365764
Merge pull request #16865 from filimonov/timeSeriesGroupSum-segfault
Fix for issue #16862
2020-11-12 19:39:14 +03:00
Nikolai Kochetov
e031e805c4 Fix test. 2020-11-12 19:04:35 +03:00
taichong
fefa2a2548 add log std out 2020-11-12 22:24:22 +08:00
tavplubix
e0dc004b95
Merge pull request #16885 from amosbird/dd
Disable ATTACH/DETACH TABLE <DICTIONARY>
2020-11-12 16:34:21 +03:00
Nikolai Kochetov
1fec1de199 Sdded test 2020-11-12 15:39:35 +03:00
TCeason
d16cd29c83
Merge branch 'master' into add_sync_user_privs_exception 2020-11-12 19:44:48 +08:00