Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

C++ JAVA
Post Reply
rino13
Нов
Нов
Posts: 3
Joined: Sat Apr 23, 2016 10:27 am

Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

Post by rino13 » Sat Jul 04, 2020 1:00 pm

Здравейте,

Отдавна не съм писал в този форум, тъй като бях зарязал кодирането за определен период от време.

Ситауацията ми в момента е следната:

Захванах се с нещо доста сериозно за моите способности.

Извличам информация чрез file_get_contents(). Посочената информация е над 10 000 000 записа, които инсъртвам в базата данни с PHP скрипт и обикновена mysql заявка като примерната:

Code: Select all

mysqli_query($conn, "INSERT INTO test (id, name, link) 
			VALUES ('$id','$name','$link')"); 
Въпросът е, че много бавно се инсъртват, по мой изчисления не трябва да гася компа с месеци. Има ли вариант да се разделят на порции или да извършвам действието от няколко устройства едновременно?

Някой има ли опит с толкова огромна база данни, която най-вероятно след това ще си иска и VPS?

Дано някой може да помогне, че моите идеи са изчерпани! Приемам всякакви предложения :)

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 891
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 63

Re: Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

Post by Revelation » Sat Jul 04, 2020 1:45 pm

Защо въобще пускаш заявките през PHP?

Ако имаш един огромен SQL файл, просто го импортни директно използвайки mysql през конзолата. Така mysql ще си разделя заявките, както намери за добре.

Code: Select all

$ mysql -uroot -pPASS < file.sql
Зависи какви са заявките, не би трябвало да отнеме кой знае колко време.

rino13
Нов
Нов
Posts: 3
Joined: Sat Apr 23, 2016 10:27 am

Re: Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

Post by rino13 » Sat Jul 04, 2020 2:47 pm

За съжаление не разполагам с file.sql. Извличам информацията от html страници в реално време, след което я разделям и импортирам в базата с посочената заявка през PHP. Варианта е да я запиша във формат на file.sql и след това през конзолата да я импортна, както ми посочихте. Но въпроса е записването във file.sql, и след това качването му през конзолата, няма ли да отнемат същото време?

uphero
Потребител
Потребител
Posts: 759
Joined: Mon Feb 20, 2012 12:26 pm
Answers: 32
Location: Казанлък
Contact:

Re: Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

Post by uphero » Sat Jul 04, 2020 4:11 pm

Не.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 891
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 63

Re: Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

Post by Revelation » Sat Jul 04, 2020 5:25 pm

Сайт ли скрейпваш?

rino13
Нов
Нов
Posts: 3
Joined: Sat Apr 23, 2016 10:27 am

Re: Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

Post by rino13 » Sat Jul 04, 2020 7:34 pm

Част от сайт! Но ще има преработки няма да е едно към едно.

User avatar
muti
Турист
Турист
Posts: 272
Joined: Thu Nov 14, 2019 7:03 am
Answers: 2

Re: Идеи как мога максимално бързо да Insert-на над 10 милиона записа в mysql

Post by muti » Mon Jul 06, 2020 5:33 am

Щом знаеш колко са урл адресите значи си ги свалил, слагаш ги на 10 машини по 1милион адреса и да започват да работят.

Post Reply