sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:mijn database optimaliseren voor het opslaan en doorzoeken van een enorme grafiek

Ik denk dat het komt door een "dichtheid" van records met dezelfde sleutel op de schijf. , verdeeld over een groot aantal blokken). Als u records in de volgorde van id hebt ingevoegd, kan deze situatie voorkomen.

Stel dat:1. er zijn 10.000 records,2. ze worden opgeslagen in de volgorde zoals (id, link) =(1, 1), (1, 2),..., (1, 100), (2, 1)..., and3. Er kunnen 50 records in een blok worden opgeslagen.

In de bovenstaande aanname bestaat blok #1~#3 uit de records (1, 1)~(1, 50), (1, 51)~(1, 100) en (2, 1)~(2, 50) respectievelijk.

Wanneer u SELECT * FROM edges WHERE id=1 , hoeven slechts 2 blokken (#1, #2) te worden geladen en gescand. Aan de andere kant, SELECT * FROM edges WHERE link=1 vereist 50 blokken (#1, #3, #5,...), ook al is het aantal rijen hetzelfde.



  1. De naam van een mysql-procedure wijzigen

  2. Steigerconfiguratie:problemen met MySQL JNDI

  3. Hoe productbeoordelingsscores te middelen met activerecord en POSTGRES

  4. Met PyMySQL kan ik geen verbinding maken met RDS