Crawl nhiều link mysql tăng đột biến

Discussion in 'Linux - PHP - Python - C# - Java' started by Nai, Oct 5, 2017.

  1. Nai

    Nai MiddleMan Staff Member

    Tình hình là em có thuê 1 chú code tool crawl bằng bằng java.
    Em thử crawl 10.000 url thì dung lượng database là 8GB.
    Sau đó em thử tạo 2 database khác đặt:
    • 1 cái là crawl 5.000 dòng đầu tiên
    • 1 cái là crawl 5.000 dòng tiếp theo
    Kết quả 2 database nhỏ này mõi cái chỉ 2GB.
    @@ Em hỏi nó tại sao thì nó bảo do cơ chế cache của mysql. Khônng biết phải vậy ko mọi người, vì số lượng link cũng nhiều nếu thế này thì mỗi lần em chỉ crawl 5.000.
     
  2. money

    money Hương Chủ

    Crawl nội dung gì mà dài vậy? Mấy triệu link của anh cũng chỉ có hơn chục Gb là mỗi bài đã dài lắm rồi.
     
  3. Nai

    Nai MiddleMan Staff Member

    Mấy cái product trên lazada ấy anh à. 10.000 sản phẩm mà nó đã 4GB rồi. Mà ngặt cái addon mysql của excel nó querry dữ database nào nặng nặng ko được nên mỗi lần chỉ export database maximum là 10.000 dòng. Cái nào nhẹ nhẹ thì tầm vài chục MB thì vài trăm nghìn dòng.
    .
    Lần đầu em nhét tầm 50.000 link làm mysql phình ra cả trăm GB =.=, mà export sang exel chỉ có vài chục MB. Chả hiểu luôn.

    Giờ đi làm mà lâu lâu remote về nhà để tạo database mới cho nó crawl lẻ lẻ vậy đấy, mất thời gian lắm luôn =.=
     
  4. money

    money Hương Chủ

    Vậy móc db ra xem, coi chừng bị insert nhầm (duplicate) rồi chứ ko thể lớn như vậy dc.
    Nếu em dùng MyISAM để lưu thì nhìn thấy rõ nhất. Một table chủ yếu lưu trong 2 file có tên: table.myd là chứa data, nó ko lớn hơn lưu bằng txt bao nhiêu cả. Một bài viết 1k words chỉ tốn chừng 5KB thôi. File còn lại là table.myi là chứa index. Nếu index thường thì tốn rất ít, nếu dùng fulltext index thì nó lớn khoảng gấp 2 lần file .myd. Nếu em crawl product chỉ lưu tên, link, giá, bài viết, comments (ko lưu ảnh) thì cùng lắm khoảng vài trăm MB cho 10k products thôi chứ làm gì mà lên mấy gb.
     
    Nai likes this.
  5. Nai

    Nai MiddleMan Staff Member

    Em có lưu url ảnh chứ ko lưu ảnh. Ngoài ra thì đúng là có duplicate phần cat thật nhưng em bảo nó fix rồi. Để em check mấy phần anh note xem sao. {adore}
     
  6. Lê Tuấn

    Lê Tuấn Tân Thủ Thôn

    Không thể nặng thế đc đâu bác, em lưu 1 triệu rows mà mỗi bài viết trung bình gần 1000 ký tự mà cũng chỉ có 2GB. Em lưu kiểu InnoDB
     
  7. Luxifer

    Luxifer Sơ Nhập Giang Hồ

    Lazada VN khoản 2-3 triệu active products. DB dump không nén tầm 300-500GB. 5000 products của bạn crawl mà 2GB thì sẻ tốn khoản 800GB cho 2 triệu products. Chắc là code bạn kia crawl bị duplicate rồi. Khi crawl có lấy SKU không? Nếu có check SKU là biết.
     
  8. Nai

    Nai MiddleMan Staff Member

    Kiểu này có phải InnoDB ko bác?
    upload_2017-10-5_9-10-54.png
    Khi crawl chỉ lấy tổng hợp lấy: mô tả (bỏ html), cột riêng chưa url image, giá, tên sản phẩm, cat. Ban đầu thì cat lưu theo dạng breakcumb nhưng bị duplicate ghi 2 3 lần 1 giá trị (nhưng tùy rows), sau đó fix lại rồi vẫn ko khá hơn mấy. Chả hiểu bị gì nữa.
    Tối về setup cái MyISAM như anh money mách xem thế nào :D. Chứ coder bảo lỗi do mysql ko phải do nó nên cũng chỉ còn cách tự thân vận động :D
     
  9. Luxifer

    Luxifer Sơ Nhập Giang Hồ

    Nếu vậy thì khả năng bị trùng khá là cao đó bạn.
    Theo hình của bạn thì bạn đang xài InnoDB đó, Lazada cũng đang xài InnoDB :D. Bạn đang làm về website TMDT hả? nếu vậy nên dùng InnoDB thay vì MyISAM
     
  10. money

    money Hương Chủ

    @Nai nhìn hình thì có mấy trăm Mb mà?
    Chuyển sang MyISAM thì chỉ cần convert là xong, cần gì setup mới.
     
    Nai likes this.
  11. Nai

    Nai MiddleMan Staff Member

    Tại em ko biết MyISAM anh nói cái gì nên tối về mới Google :D.
    Mà em nói roài, 5000 rows đầu im ru à, càng nhiều mới bắt đầu bị ám {burn_joss_stick}
    Mà bị lazada thôi anh, cái này em crawl thằng khác.
     
  12. Nai

    Nai MiddleMan Staff Member

    Mới crawl convert và crawl thử đây anh. Xem bộ cũng không cải thiện gì cả :D
    upload_2017-10-5_11-30-40.png
     
  13. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Up cấu trúc cái bản products lên thử xem gồm những gì mà nặng thế. Demo vài dòng nữa {angry}
     
  14. money

    money Hương Chủ

    Chuyển sang MyISAM là để dễ check nó to vì cái gì (data hay index) chứ ko phải để giảm dung lượng đâu :D MyISAM tốn dung lượng hơn innodb.

    Em xem trong thư mục chứa database ấy, xem file products.MYD to hay products.MYI to?
    Nếu .MYD lớn --> chứng tỏ data nhiều --> khả năng do bị insert duplicate content -> query từng field của product ra xem thử chi tiết như thế nào?
    Nếu .MYI lớn --> do index nhiều --> xem lại index nào không cần thiết thì bỏ đi.
     
    EDM likes this.
  15. Nai

    Nai MiddleMan Staff Member

    upload_2017-10-5_19-9-20.png
    Vậy chắc duplicate rồi anh, mà sao biết dup thằng nào đây 5.000 dòng query đến khi mô {cry}
    Đây nè Admin ơi
    upload_2017-10-5_19-11-43.png
     
  16. Lê Tuấn

    Lê Tuấn Tân Thủ Thôn

    Nếu như này thì chỉ cần query by product name là biết ngay dulicate hay k ấy mà
     
  17. money

    money Hương Chủ

    Export cấu trúc db ra anh xem nào?
     
    Nai likes this.
  18. Nai

    Nai MiddleMan Staff Member

    Đã phát hiện lỗi ở đâu rồi anh à, đang bảo nó fix.
    Cột J (Tức là cột chứa tất cả các url image trong phần giới thiệu sản phẩm): Khi mà sản phẩm đó ko có image mà nó cache ở đâu ko biết, nó ra gần chục nghìn url, tron đó url bị duplace khoảng 20%.
    Sau khi remove cột image ra khỏi table thì từ 2GB xuống còn có vài MB {beat_brick}
     
  19. money

    money Hương Chủ

    Vậy có nhậu ko?
     
  20. Nai

    Nai MiddleMan Staff Member

    {too_sad}{too_sad}{too_sad}{too_sad}
    Hẹn chầu cuối năm được không anh. Thực sự là mới uống 2 chai thuốc ho PH mà chưa hết ho nữa{sad}