Ответы пользователя по тегу Perl
  • Почему MongoDB вдруг начала тормозить при вставке данных?

    @PavelKuptsov Автор вопроса
    IT инженер
    1. Запрос (их несколько но они идентичны по логике)
    $col_doc->update(
                { url => $url },
                {
                    '$set' => {
                        url      => $url,
                        reg_date => $reg_date
                      }
    
                },
                { upsert => 1 }
    );

    и вот в другую коллекцию:
    $col_statistic->update(
                { ts => $start_time },
                {
                    '$inc' => { $assist => 1 }
                },
                { upsert => 1 }
            );


    2. Индексы все удалил - остался только _id_
    3. explain без индексов показывает
    "winningPlan" : {
                            "stage" : "UPDATE",
                            "inputStage" : {
                                    "stage" : "COLLSCAN",
                                    "filter" : {
                                            "url" : {
                                                    "$eq" : "document.local"
                                            }
                                    },
                                    "direction" : "forward"
                            }
                    },
                    "rejectedPlans" : [ ]

    с индексом по url:
    "winningPlan" : {
                            "stage" : "UPDATE",
                            "inputStage" : {
                                    "stage" : "FETCH",
                                    "inputStage" : {
                                            "stage" : "IXSCAN",
                                            "keyPattern" : {
                                                    "url" : 1
                                            },
                                            "indexName" : "url_1",
                                            "isMultiKey" : false,
                                            "direction" : "forward",
                                            "indexBounds" : {
                                                    "url" : [
                                                            "[\"document.local\", \"document.local\"]"
                                                    ]
                                            }
                                    }
                            }
                    },
                    "rejectedPlans" : [ ]


    4.
    На коллекции:
    {
            "ns" : "prepared.documents",
            "count" : 422836,
            "size" : 91540732,
            "avgObjSize" : 216,
            "storageSize" : 24944640,
            "capped" : false,
            "wiredTiger" : {
                    "metadata" : {
                            "formatVersion" : 1
                    },
                    "creationString" : "allocation_size=4KB,app_metadata=(formatVersion=1),
    -- порезано тут ---
            "nindexes" : 2,
            "totalIndexSize" : 10375168,
            "indexSizes" : {
                    "_id_" : 4202496,
                    "url_1" : 6172672
            },
            "ok" : 1
    }

    Это уже когда создал индекс по url
    на БД
    > db.stats()
    {
            "db" : "documents",
            "collections" : 4,
            "objects" : 422843,
            "avgObjSize" : 216.49207625525312,
            "dataSize" : 91542159,
            "storageSize" : 25034752,
            "numExtents" : 0,
            "indexes" : 5,
            "indexSize" : 10444800,
            "ok" : 1
    }


    Это все данные с полупустой бд - на которой тоже тормоза начинаются при интенсивных инсертах

    5. mongostat сейчас выложу.
    insert query update delete getmore command % dirty % used flushes  vsize    res qr|qw ar|aw netIn netOut conn     time
        *0    34    732     *0       0     1|0     0.7    4.0       0 408.0M 234.0M   0|0   1|0  195k    95k   17 14:21:43
        *0    *0    260     *0       0     1|0     0.7    4.0       0 408.0M 234.0M   0|0   1|0   88k    34k   17 14:21:44
        *0    *0    230     *0       0     1|0     0.7    4.0       0 408.0M 234.0M   0|0   1|1   79k    31k   17 14:21:45
        *0    *0    332     *0       0     2|0     0.7    4.0       0 408.0M 234.0M   0|0   1|0  113k    39k   16 14:21:46
        *0     1    277     *0       0     3|0     0.8    4.0       0 408.0M 234.0M   0|0   1|0   91k    37k   17 14:21:47
        *0     7    488     *0       0     1|0     0.8    4.0       0 409.0M 235.0M   0|0   1|1  132k    65k   17 14:21:48
        *0    32    693     *0       0     1|0     0.8    4.0       0 409.0M 235.0M   0|0   1|0  183k    92k   17 14:21:49
        *0    14    508     *0       0     1|0     0.8    4.0       0 409.0M 235.0M   0|0   1|0  141k    67k   17 14:21:50
        *0    *0    243     *0       0     1|0     0.8    4.0       0 409.0M 235.0M   0|0   1|0   84k    32k   17 14:21:51
        *0    *0    247     *0       0     2|0     0.8    4.0       0 409.0M 235.0M   0|0   1|1   82k    33k   17 14:21:52
    insert query update delete getmore command % dirty % used flushes  vsize    res qr|qw ar|aw netIn netOut conn     time
        *0    *0    187     *0       0     1|0     0.3    4.0       1 409.0M 235.0M   0|0   1|1   63k    28k   17 14:21:53
    Ответ написан
  • Как в perl найти одну строку в тексте и сравнить?

    @PavelKuptsov
    IT инженер
    На мой взгляд было бы красивее так:
    #!/usr/bin/perl -w
    
    use strict;
    
    open(F1, "<","test.txt") || die $!;
    while(<F1>)
    {
            chomp;
            /^\bValue\b\s+:\s+([A-Z0-9]+)$/g;
    next unless $1;
        if ($1 eq "A1")
        {
            print "$_\n" and exit 0;
        }
    
    }
    close(F1);


    Это во-первых не потребует полного чтения файла (после того как мы нашли значение - выходим из программы), во-вторых меньший расход памяти (вы сперва читаете файл в массив - что не надо, лучше построчное чтение через while())
    Ответ написан
    Комментировать