рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдФрд░ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдиреЗрдЯрд╡рд░реНрдХ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА - рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╛рдБрдЯрдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рддреБрд░рдВрдд рдкрд░реАрдХреНрд╖рдг рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗ: рд╣рдо рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХрд┐рддрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рджрд░реНрд╢рди рдмреВрдВрджреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ PostgreSQL DBMS рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдХреБрдЫ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЧрдИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЕрдкрдиреА рдЕрдзрд┐рдХрддрдо рд╢рдХреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдЙрдкрд╛рдпреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕, рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рд▓реЗрдЦ Zabbix рдФрд░ PostgreSQL DBA рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ, рд╕рд╛рде рд╣реА рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд▓реЛрдХрдкреНрд░рд┐рдп PosgreSQL DBMS рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдПрдХ рдЫреЛрдЯрд╛ рд╕реНрдкреЙрдЗрд▓рд░: рдкреНрд░рддрд┐ рдорд┐рдирдЯ 200 рд╣рдЬрд╛рд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рднрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдордЬреЛрд░ рдорд╢реАрди рдкрд░, рд╣рдордиреЗ рд╕реАрдкреАрдпреВ рдЖрдпреЛрд╡рд╛рдЗрдЯ рдХреЛ 20% рд╕реЗ 2% рддрдХ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧреЛрдВ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕рдордп рдХреЛ 250 рдЧреБрдирд╛ рддрдХ рдХрдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ 32 рдмрд╛рд░ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдХреЗ, рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ред 5-10 рдмрд╛рд░ рдФрд░ 18 рдмрд╛рд░ рддрдХ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдирдореВрдиреЛрдВ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдПрдВред
рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг
рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдПрдХ рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕рд░реНрд╡рд░, рдПрдХ рд╕рдХреНрд░рд┐рдп рдЬрд╝реИрдмрд┐рдХреНрд╕ рдкреНрд░реЙрдХреНрд╕реА, рджреЛ рдПрдЬреЗрдВрдЯред рдкреНрд░рддреНрдпреЗрдХ рдПрдЬреЗрдВрдЯ рдХреЛ рдкреНрд░рддрд┐ рдорд┐рдирдЯ 50 рдЯрди рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ 50 рдЯрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ (рдкреНрд░рддрд┐ рдорд┐рдирдЯ 200 рдЯрди рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 3333 рдкреИрд░рд╛рдореАрдЯрд░) рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдЬреЗрдВрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ
Zabbix рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
ред рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рдПрдЬреЗрдВрдЯ рдХрд┐рддрдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ
рдЙрд╕реА рдкреНрд▓рдЧ-рдЗрди рд▓реЗрдЦрдХ zabbix_module_stress рд╕реЗ рдПрдХ
рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Zabbix рд╡реЗрдм-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдмрдбрд╝реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ 5 рдЯрди рдорд╛рдкрджрдВрдбреЛрдВ (2500 рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдФрд░ 2500 рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдХреЗ рд╕рд╛рде 20 рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдЕрдЬрдЧрд░ рдореЗрдВ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯimport argparse """ . 20 5000 ( 2500 : echo, ; ping, ) """ TEMP_HEAD = """ <?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>2.0</version> <date>2015-08-17T23:15:01Z</date> <groups> <group> <name>Templates</name> </group> </groups> <templates> <template> <template>Template Zabbix Srv Stress {count} passive {char}</template> <name>Template Zabbix Srv Stress {count} passive {char}</name> <description/> <groups> <group> <name>Templates</name> </group> </groups> <applications/> <items> """ TEMP_END = """</items> <discovery_rules/> <macros/> <templates/> <screens/> </template> </templates> </zabbix_export> """ TEMP_ITEM = """<item> <name>{k}</name> <type>0</type> <snmp_community/> <multiplier>0</multiplier> <snmp_oid/> <key>{k}</key> <delay>1m</delay> <history>3</history> <trends>365</trends> <status>0</status> <value_type>{t}</value_type> <allowed_hosts/> <units/> <delta>0</delta> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <formula>1</formula> <delay_flex/> <params/> <ipmi_sensor/> <data_type>0</data_type> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications/> <valuemap/> <logtimefmt/> </item> """ TMP_FNAME_DEFAULT = "Template_App_Zabbix_Server_Stress_{count}_passive_{char}.xml" chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" if __name__ == "__main__": parser = argparse.ArgumentParser( description=' zabbix') parser.add_argument('--items', dest='items', type=int, default=1000, help='- (default: 1000)') parser.add_argument('--templates', dest='templates', type=int, default=1, help=f'- [1-{len(chars)}] (default: 1)') args = parser.parse_args() items_count = args.items tmps_count = args.templates if not (tmps_count >= 1 and tmps_count <= len(chars)): sys.exit(f"Templates must be in range 1 - {len(chars)}") for i in range(tmps_count): fname = TMP_FNAME_DEFAULT.format(count=items_count, char=chars[i]) with open(fname, "w") as output: output.write(TEMP_HEAD.format(count=items_count, char=chars[i])) for k,t in [('stress.ping[{}-I-{:06d}]',3), ('stress.echo[{}-S-{:06d}]',4)]: for j in range(int(items_count/2)): output.write(TEMP_ITEM.format(k=k.format(chars[i],j),t=t)) output.write(TEMP_END)
рд╕реАрдкреАрдпреВ рдЖрдИрдУрд╕реНрдЯрд╛рдЯ рдореАрдЯреНрд░рд┐рдХ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрддрдХ рд╣реИ - рдпрд╣ рдЙрд╕ рд╕рдордп рдХреА рдЗрдХрд╛рдИ рдХреЗ рдЕрдВрд╢ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдбрд┐рд╕реНрдХ рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, рдбрд┐рд╕реНрдХ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдирд┐рдЧрд░рд╛рдиреА рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред рд╡реИрд╕реЗ, рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдмрд▓реНрдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ "рдЬрд╝реЙрдмрд┐рдХреНрд╕ рдореЗрдВ iostat рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдХреИрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдП", рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдкреАрдбрд╝рд╛рджрд╛рдпрдХ рдмрд┐рдВрджреБ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдпреЛрд╡рд╛рдЗрдЯ рдореАрдЯреНрд░рд┐рдХ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред
рдпрд╣рд╛рдБ рд╕реАрдкреАрдпреВ рдЗрд╡рд╛рдЗрдЯ рдореЗрдЯреНрд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рддреАрди рджрд┐рди рдмрд╛рдж рд╢реБрд░реВ рдореЗрдВ рдорд┐рд▓рд╛:

рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдореЗрдЯреНрд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЪрд┐рддреНрд░ рд╣рдореЗрдВ рднреА рдорд┐рд▓рд╛ рд╡рд╣ рддреАрди рджрд┐рдиреЛрдВ рдХреЗ рднреАрддрд░ рдЕрдВрдд рдореЗрдВ рд╕рднреА рдЕрдиреБрдХреВрд▓рди рдЙрдкрд╛рдпреЛрдВ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА:

рдЬреИрд╕рд╛ рдХрд┐ рд░реЗрдЦрд╛рдВрдХрди рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕реАрдкреАрдпреВ рдЖрдпреЛрд╡рд╛рдЗрдЯ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рд▓рдЧрднрдЧ 20% рд╕реЗ 2% рддрдХ рдЧрд┐рд░ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛ред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдирдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдХреИрд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред
Zabbix рдкреНрд░рджрд░реНрд╢рди рдбреНрд░реЙрдк рдХреЗ рдХрд╛рд░рдг
рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 10 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЗ рд╕рдВрдЪрдп рдХреЗ рд╕рд╛рде, рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд┐рдореНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рддреЗрдЬреА рд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ:
- рд╕рд░реНрд╡рд░ рд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП iowait рдореАрдЯреНрд░рд┐рдХ 20% рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ, рдЬреЛ рдЙрд╕ рд╕рдордп рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╕реАрдкреАрдпреВ рдбрд┐рд╕реНрдХ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред
- рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдмрд╣реБрдд рдмрдврд╝ рдЬрд╛рддреА рд╣реИ
- рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдореАрдЯреНрд░рд┐рдХ 100% рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХ рдХреЗ рдкреВрд░реНрдг рд▓реЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╣рд╛рдЙрд╕рдХреАрдкрд░ рдХреЗ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдлрд╛рдИ рдХрд░рддреЗ рд╕рдордп рдЕрдкреНрд░рдЪрд▓рд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╣рд┐рд╕реНрдЯреНрд░реА рдЯреЗрдмрд▓ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ
рд╕реНрдерд┐рддрд┐ рдкреНрд░рддреНрдпреЗрдХ рдШрдВрдЯреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдЬрдм рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХрддреНрд░рд┐рдд рдШрдВрдЯреЗ рдХреЗ рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ - рдЙрд╕реА рд╕рдордп, рдбрд┐рд╕реНрдХ рд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рдХреНрд░рд┐рдп рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ, рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ - рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдореЗрдВ рд╡реГрджреНрдзрд┐ред рдЕрдиреБрд░реЛрдз (рд╕реАрдорд╛ рдореЗрдВ, 5 рдорд┐рдирдЯ рддрдХ рдЪрд▓рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛!)ред
Zabbix рдореЗрдВ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЗ рдЖрдпреЛрдЬрди рдкрд░ рдереЛрдбрд╝реА рдорджрджред рдпрд╣ рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдкреГрдердХреНрдХрд░рдг рдХреЗ рд╕рд╛рдеред рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдПрдХ рдЖрдЗрдЯрдорд┐рдб рдлрд╝реАрд▓реНрдб (рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдХрд╛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрджрд░реНрдн), рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рд░реВрдк (рдПрдХ рдЕрд▓рдЧ рдХреЙрд▓рдо рдореЗрдВ рдорд┐рд▓реАрд╕реЗрдХрдВрдб) рдФрд░ рдПрдХ рдЕрд▓рдЧ рдХреЙрд▓рдо рдореЗрдВ рдПрдХ рдорд╛рди рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реНрдЯреЛрд░ рдХрд░рддреА рд╣реИ (рдЕрдкрд╡рд╛рдж рд▓реЙрдЧ рдЯреЗрдмрд▓ рд╣реИ, рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рдлрд╝реАрд▓реНрдб рд╣реИрдВ - рдпрд╣ рдИрд╡реЗрдВрдЯ рд▓реЙрдЧ рдХреА рддрд░рд╣ рд╣реИ ):
рдЕрдиреБрдХреВрд▓рди рдХреНрд░рд┐рдпрд╛рдПрдБ
PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдХреВрд▓рди рдЙрдкрд╛рдп рдХрд┐рдП рдЧрдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдореБрдЦреНрдп рд╡рд┐рднрд╛рдЬрди рдФрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЙрдкрдпреЛрдЧреА рдЙрдкрд╛рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рддрд╣рдд рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХрд╛рдо рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯред рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд╕рдордп, рд╣рдордиреЗ рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг 4.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 4.2 рдкрд╣рд▓реЗ рд╣реА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 4.4 рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ? рд╕рдВрд╕реНрдХрд░рдг 4.2 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдЬрд╝реИрдмрд┐рдХреНрд╕ рдиреЗ TimescaleDB рдЯрд╛рдЗрдо рд╕реАрд░реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдореЛрдб рдореЗрдВ: рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреБрд░реЛрдз рдЕрдзрд┐рдХ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдЕрднреА рднреА рдЕрдирд╕реБрд▓рдЭреА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ (рд╡рд╣рд╛рдБ рд╣реЛрдЧрд╛) 4.4 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рд▓) -
рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВ ред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдорд╛рдорд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ TimescaleDB рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред PostgreSQL рд╕рдВрд╕реНрдХрд░рдг 10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреА рдЧрдИ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА 11 рдФрд░ 12 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (рд╣рдо рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ!) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗ:
- pgtune рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рдХрд░рдирд╛
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рднреМрддрд┐рдХ рдбрд┐рд╕реНрдХ рдкрд░ рд░рдЦрдирд╛
- pg_pathman рдХреЗ рд╕рд╛рде рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╛рд░рдгреА рдХрд╛ рд╡рд┐рднрд╛рдЬрди
- рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╛рд░рдгреА рдХреЗ рдмрджрд▓рддреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмреНрд░рд┐рди (рдШрдбрд╝реА) рдФрд░ рдмреАрдЯреА-рдЬрд┐рди (рдЖрдЗрдЯрдо) рдХреЗ рд▓рд┐рдП рдмрджрд▓рдирд╛
- рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг pg_stat_statements
- рднреМрддрд┐рдХ рдбрд┐рд╕реНрдХ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛
- рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░
- рд╡рд┐рддрд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг (рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╕рд╛рдордЧреНрд░реА)
Pgtune рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, PostgreSQL рдПрдХ рдХрд╛рдлреА рд╣рд▓реНрдХрд╛ DBMS рд╣реИред рдЗрд╕рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЗрд╕рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдХрд╣рддреЗ рд╣реИрдВ, "рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЙрдлреА рдорд╢реАрди рдкрд░ рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ", рдЕрд░реНрдерд╛рддред рдмрд╣реБрдд рдорд╛рдореВрд▓реА рд▓реЛрд╣реЗ рдкрд░ред рдЗрд╕рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП PostgreSQL рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░, рдбрд┐рд╕реНрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ (рдПрдЪрдбреАрдбреА рдпрд╛ рдПрд╕рдПрд╕рдбреА) рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред
рдХрд╛рд╢, рд╕рднреА DBMS рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХрд▓ рд╕реВрддреНрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдирд┐рдпрдо рдФрд░ рдкреИрдЯрд░реНрди рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ (рдорд╣реАрди рдЯреНрдпреВрдирд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХрд╛ рдХрд╛рдо рд╣реИ)ред DBA рдХреЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
pgtune рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ PostgreSQL рдкреНрд░рд╢рд╛рд╕рди рдкрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рдкреБрд╕реНрддрдХ рдХреЗ рд▓реЗрдЦрдХ
le0pard рджреНрд╡рд╛рд░рд╛
рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
"рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ 100 рдХрдиреЗрдХреНрд╢рди (Zabbix рдореЗрдВ рдПрдХ рдбрд┐рдорд╛рдВрдб рд╡реЗрдм рдПрдбрдорд┐рди) рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
pgtune -i postgresql.conf -o new_postgresql.conf -T DWT 100
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ pgtune рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдмрджрд▓рддрд╛ рд╣реИ (рдорд╛рди рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВ) # DB рд╕рдВрд╕реНрдХрд░рдг: 11
# OS рдкреНрд░рдХрд╛рд░: рд▓рд┐рдирдХреНрд╕
# DB рдкреНрд░рдХрд╛рд░: рд╡реЗрдм
# рдХреБрд▓ рдореЗрдореЛрд░реА (RAM): 8 рдЬреАрдмреА
# рд╕реАрдкреАрдпреВ рд╕рдВрдЦреНрдпрд╛: 1
# рдХрдиреЗрдХреНрд╢рди рд╕рдВрдЦреНрдпрд╛: 100
# рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ: hdd
max_connections = 100 # рд╕рдорд╡рд░реНрддреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛
рд╢реЗрдпрд░реНрдб рдореЗрдореЛрд░реА рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмрдлрд╝рд░реНрд╕ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЯреЗрдмрд▓ рдмреНрд▓реЙрдХреНрд╕ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмреНрд▓реЙрдХ рдХрд╛ рдХреИрд╢) рдХреЗ рд▓рд┐рдП share_buffers = 2GB # рдореЗрдореЛрд░реА рд╕рд╛рдЗрдЬрд╝
рдкреНрд░рднрд╛рд╡реА_cache_size = 6GB # рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░
рд░рдЦрд░рдЦрд╛рд╡_рд╡рд░реНрдХ_рдо = 512 рдПрдордмреА # VACUUM, ANALYZE, CREATE INDEX рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдЪреЗрдХрдкреЙрдЗрдВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП checkpoint_completion_target = 0.7 # рд▓рдХреНрд╖реНрдп рд╕рдордп
wal_buffers = 16MB # рдореЗрдореЛрд░реА рдХреА рд░рд╛рд╢рд┐ рдЬреЛ рд▓реЗрди-рджреЗрди рд▓реЙрдЧ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ
Default_statistics_target = ANALYZE рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЖрдБрдХрдбрд╝реЛрдВ рдХреА 100 # рд░рд╛рд╢рд┐ - рдЬрдм рдмрдврд╝рддреА рд╣реИ, рддреЛ рдЖрд╢рд╛рд╡рд╛рджреА рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдкреНрд░рд╢реНрди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░
random_page_cost = 4 # рдбреЗрдЯрд╛ рдкреГрд╖реНрдареЛрдВ рддрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд╣реБрдВрдЪ рдХреА рд╕рд╢рд░реНрдд рд▓рд╛рдЧрдд - рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ
рдкреНрд░рднрд╛рд╡реА_io_concurrency = 2 # рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ DBMS рдПрдХ рдЕрд▓рдЧ рд╕рддреНрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛
work_mem = 10485kB # рдбрд┐рд╕реНрдХ рдкрд░ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЫрдБрдЯрд╛рдИ рдФрд░ рд╣реИрд╢ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛
min_wal_size = 1GB # рд╡рд╛рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдиреАрдЪреЗ рдХреА рд╕реАрдорд╛рдПрдБ рдЬрд┐рдиреНрд╣реЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд╡реАрдиреАрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
max_wal_size = 2GB # рд╡рд╛рд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд╡реАрдиреАрдХрд░рдг рдХреА рдЬрд╛рдПрдВрдЧреА, рдХреА рд╢реАрд░реНрд╖ рд╕реАрдорд╛
рдХреБрдЫ рдЙрдкрдпреЛрдЧреА postgresql рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдХрд▓реНрдк # рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдз рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди
max_worker_processes = 8 # рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ - рдкреНрд░рддрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдо рд╕реЗ рдХрдо рдПрдХ
max_parallel_workers_per_gather = 4 # рдПрдХрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рднреАрддрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛
max_parallel_workers = 8 # рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ
# рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (pg_stat_statements рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛)
log_min_duration_statement = 3000 # рд▓реЙрдЧ рдЙрди рд╕рднреА рдХрдорд╛рдВрдбреНрд╕ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрд╡рдзрд┐ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдордп> = ms рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рдХрд╛ =
log_duration = off # рдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реНрдг рдХрдорд╛рдВрдб рдХреА рдЕрд╡рдзрд┐ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ
log_statement = 'рдХреЛрдИ рдирд╣реАрдВ' # рдЬреЛ SQL рдХрдорд╛рдВрдб рдХреЛ рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди: рдХреЛрдИ рдирд╣реАрдВ (рдЕрдХреНрд╖рдо), ddl, mod рдФрд░ рд╕рднреА (рд╕рднреА рдХрдорд╛рдВрдб)
debug_print_plan = рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рди рдЯреНрд░реА рдХрд╛ # рдЖрдЙрдЯрдкреБрдЯ
# рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдХреЛ рдирд┐рдЪреЛрдбрд╝реЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рддреИрдпрд╛рд░ рд░рд╣реЗрдВ (рд╕рдмрд╕реЗ рджрдорд┐рдд рдХреЗ рд▓рд┐рдП, рдЬреЛ рдПрд╕рдПрд╕рдбреА рдФрд░ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ)
#fsync = рдСрдл # рдЪреЗрдВрдЬ рдбрд┐рд╕реНрдХ рдореЗрдВ рдлрд┐рдЬрд┐рдХрд▓ рд░рд╛рдЗрдЯ, fsync рдХреЛ рдбрд┐рд╕реЗрдмрд▓ рдХрд░рдиреЗ рд╕реЗ рд╕реНрдкреАрдб рдореЗрдВ рддреЗрдЬреА рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдпреА рд╡рд┐рдлрд▓рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ
#synchronous_commit = off # рд▓реЗрди-рджреЗрди рдХреА рдЬрд╛рдирдХрд╛рд░реА Wal рдореЗрдВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - fsync рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рд▓рдЧрднрдЧ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рдХрд▓реНрдк
#full_page_writes = off # рд╢рдЯрдбрд╛рдЙрди рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рдбреЗрдЯрд╛ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдпрд╛ рдбреЗрдЯрд╛ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ
рдПрдХ рдЕрд▓рдЧ рднреМрддрд┐рдХ рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛
рдпрд╣ рдЖрдЗрдЯрдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдФрд░ рдмрд▓реНрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд░рдордгрдХрд╛рд▓реАрди рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдХ рдкрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдкреВрд░реА рдбрд┐рд╕реНрдХ рдХреЛ рдЖрдзрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рднреА рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рдирдпрд╛ рдЯреЗрдмрд▓рдмреЗрд╕ рдмрдирд╛рдПрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (рдпрд╛ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ - рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдХ рдкрд░ рдЗрд╕ рдЯреЗрдмрд▓рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рдПрдХрддреНрд░рд┐рдд рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреА рддрд╛рд▓рд┐рдХрд╛рдПрдВ)ред
рдкрд░реНрд╡рдд рдЙрджрд╛рд╣рд░рдгрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ ext4 рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХ рдХреЛ рдлреЙрд░реНрдореЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рдХреЛ noatime рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
рдЖрд░реЛрд╣ / рджреЗрд╡ / sdc1 / var / lib / pgsql / 10 / data / base -o noatime
рд╕реНрдерд╛рдпреА рдмрдврд╝рддреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди рдХреЛ / etc / fstab рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
# рдЬрд╣рд╛рдВ UUID рдбрд┐рд╕реНрдХ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ Blkid рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
UUID = 121efe29-70bf-410b-bc71-90704568ce3b / var / lib / pgsql / 10 / data / base ext4 рдЪреВрдХ, noatime 0 0
Pg_pathman рдХреЗ рд╕рд╛рде рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╛рд░рдгреА рдХрд╛ рд╡рд┐рднрд╛рдЬрди
Zabbix - PostgreSQL рдХреЗ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╣рдореЗрдВ рдЬрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЗрд╕рдХреЗ рдШрдЯрдХ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рд╕реБрдкрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдШрдЯрдХ рднрд╛рдЧреЛрдВ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЧрддрд┐ рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рднрд╛рдЬрди рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:
1. рд╕рдВрдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдПрдВ
2. рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдпреБрдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрди рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛
PostgreSQL рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рддрдВрддреНрд░ рд╣реИрдВ:
1. рдорд╛рдирдХ рдмрд╛рдзрд╛
2. рд╡рд┐рд╕реНрддрд╛рд░ pg_partman (
pg_pathman рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ )
3. рд╡рд┐рд╕реНрддрд╛рд░
pg_pathman4. рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдмрдирд╛рдПрдВ рдФрд░ рдмрдирд╛рдП рд░рдЦреЗрдВ
рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рд╡рд┐рднрд╛рдЬрди рд╕рдорд╛рдзрд╛рди,
pg_pathman рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИред рдЗрд╕ рд╡рд┐рднрд╛рдЬрди рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде, рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рдирд░ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рд╡рд┐рднрд╛рдЬрди рдбреЗрдЯрд╛ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдлрд╡рд╛рд╣ рдпрд╣ рд╣реИ рдХрд┐ PostgreSQL рдХреЗ 12 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╡рд┐рднрд╛рдЬрди рд╣реЛрдЧрд╛редрдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рди рдХреЗ рд▓рд┐рдП рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЛ рд╕реБрдкрд░рдЯреЗрдмрд▓ рд╕реЗ рдЕрд▓рдЧ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдЕрдкреНрд░рдЪрд▓рд┐рдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдиреЗ рд▓рдЧрд╛, рдЬреЛ рд╢реНрд░рдо рд▓рд╛рдЧрдд рджреНрд╡рд╛рд░рд╛ рдПрдХ DBMS рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдпреВрдЬрд░ рдлрдВрдХреНрд╢рди рдХреЛ Zabbix рд╕рд░реНрд╡рд░ рдХреЗ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рдд 2 рдмрдЬреЗ рдХреЙрд▓ рдХрд░рдХреЗ рдбрд┐рд▓реАрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рд╣реИред
PostgreSQL 10 рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдорд╛рдирдХ OS рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ
pg_pathman рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, github рдкрд░ рдЙрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦреЗрдВ):
yum рдЗрдВрд╕реНрдЯреЙрд▓ pg_pathman10
nano /var/pgsqldb/postgresql.conf
share_preload_lbooks = 'pg_pathman' # рдорд╣рддреНрд╡рдкреВрд░реНрдг - рдпрд╣рд╛рдБ рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо pg_pathman рд▓рд┐рдЦреЗрдВ
рд╣рдо DBMS рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ (рдкреНрд░рд╛рдердорд┐рдХ рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП 1 рджрд┐рди рдФрд░ рдПрдХрддреНрд░рд┐рдд рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП 3 рджрд┐рди - рдпрд╣ 1 рджрд┐рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ):
systemctl рдкреБрдирдГ рдЖрд░рдВрдн postgresql-10.service
psql -d zabbix -U рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХрд░рддрд╛ рд╣реИ
рд╕реГрдЬрди рд╡рд┐рд╕реНрддрд╛рд░ pg_pathman;
# рдкреНрд░рд╛рдердорд┐рдХ рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
# 1552424400 - рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд▓рдЯреА рдЧрд┐рдирддреА, 86400 - рд╕реЗрдХрдВрдб рджрд┐рдиреЛрдВ рдореЗрдВ
create_range_partitions ('рдЗрддрд┐рд╣рд╛рд╕', 'рдШрдбрд╝реА', 1552424400, 86400) рдЪреБрдиреЗрдВ;
create_range_partitions ('history_uint', 'clock', 1552424400, 86400) рдЪреБрдиреЗрдВ;
create_range_partitions ('history_text', 'clock', 1552424400, 86400) рдЪреБрдиреЗрдВ;
create_range_partitions ('history_str', 'clock', 1552424400, 86400) рдЪреБрдиреЗрдВ;
create_range_partitions ('history_log', 'clock', 1552424400, 86400) рдЪреБрдиреЗрдВ;
# рдПрдХреАрдХреГрдд рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреАрди рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
# 1552424400 - рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд▓рдЯреА рдЧрд┐рдирддреА, 259200 - рддреАрди рджрд┐рдиреЛрдВ рдореЗрдВ рд╕реЗрдХрдВрдб
create_range_partitions ('рд░реБрдЭрд╛рди', 'рдШрдбрд╝реА', 1545771600, 259200) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
create_range_partitions ('Trends_uint', 'clock', 1545771600, 259200) рдЪреБрдиреЗрдВ;
рдпрджрд┐ рдЕрднреА рддрдХ рдХрд┐рд╕реА рднреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ create_range_partitions рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ p_count = 0_ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрд╡рд┐рднрд╛рдЬрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдкреНрд░рд╢реНрди:
# рд╡рд┐рднрд╛рдЬрди рддрд╛рд▓рд┐рдХрд╛ рдХреА рдореБрдЦреНрдп рд╕реВрдЪреА, рдореБрдЦреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рднрдВрдбрд╛рд░рдг:
pathman_config рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
# рд╕рднреА рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧреЛрдВ, рд╕рд╛рде рд╣реА рдЙрдирдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рд╕реАрдорд╛ рд╕реАрдорд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
pathman_partition_list рд╕реЗ * рдЪреБрдиреЗрдВ;
# рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рдорд╛рдирдХ pg_pathman рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ:
pathman_config_params рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
# рд╕рд╛рдордЧреНрд░реА рдХреЛ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рд╡рд┐рднрд╛рдЬрди рд╣рдЯрд╛рдПрдВ:
drop_partitions ('table_name' :: regclass, false) рдЪреБрдиреЗрдВ;
рд╡рд┐рднрд╛рдЬрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЖрдХрд╛рд░ рдкрд░ рдЖрдБрдХрдбрд╝реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
SELECT nspname AS schemaname, relname, relkind, cast (reltuples as int), pg_size_pretty(pg_relation_size(C.oid)) AS "size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') and (relname like 'history%' or relname like 'trends%') and relkind = 'r'
рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдСрдЯреЛ-рдЯреНрдпреВрдирд┐рдВрдЧ (рдПрдВрдереБрдВрдЧ - рдПрдХ рдмрдбрд╝рд╛ SQL рдлрд╝рдВрдХреНрд╢рди)рд╡рд┐рднрд╛рдЬрди рдХреЗ рдСрдЯреЛ-рд╡рд┐рд▓реЛрдкрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
(рд╡рд┐рд╕реНрддреГрдд рдкрд╛рда, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛):
рд╕реГрдЬрди рдпрд╛ рд╕рдореАрдХреНрд╖рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░реЗрдВ .de_old_partitions (history_days рдкреВрд░реНрдгрд╛рдВрдХ, Trends_days рдкреВрд░реНрдгрд╛рдВрдХ, str_days рдкреВрд░реНрдгрд╛рдВрдХ)
рдкрд╛рда рдкрд╛рда
рднрд╛рд╖рд╛ plpgsql
$ рд╕рдорд╛рд░реЛрд╣ $ рдХреЗ рд░реВрдк рдореЗрдВ
/ *
рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджрд┐рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рд╕рднреА рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ:
history_days - рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП history_x, history_uint_x
Trends_days - рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП Trends_x, Trends_uint_x
str_days - рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП history_str_x, history_text_x, history_log_x
* /
рдШрдбрд╝реА рдХреА рдШреЛрд╖рдгрд╛ рдШрдбрд╝реА_рдЯреЛрдбреЗ_рд╕реНрдЯрд╛рд░реНрдЯ рдЗрдВрдЯ;
рдШрдбрд╝реА рдХреА рдШреЛрд╖рдгрд╛ рдШрдбрд╝реА_рд▓реЗ_рд▓реЗ_рд╣рд┐рд╕реНрдЯреНрд░реА int = 0;
рдШрдбрд╝реА рдХреА рдШреЛрд╖рдгрд╛ рдШрдбрд╝реА_рдбреЗрд▓реЗ_рд▓реЗрд╕_рдЯреНрд░реЗрдВрдбреНрд╕ рдЗрдВрдЯ = 0;
рдШрдбрд╝реА рдХреА рдШреЛрд╖рдгрд╛ рдШрдбрд╝реА_рд▓реЗ_рд▓реЗ_рд╕реНрдЯреНрд░рд┐рдВрдЧ int = 0;
clock_delete_less int = 0;
рдШреЛрд╖рд┐рдд itter int = 0;
result_str text = '' рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ;
buf_table_size рдкрд╛рда рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ;
buf_table_len рдкрд╛рда рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ;
рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо рдкрд╛рда рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ;
рдШрдбрд╝реА_рдореЗрдХреНрд╕ рдкрд╛рда рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ;
ir_detail рдЯреЗрдХреНрд╕реНрдЯ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ;
tarestart timestamp = clock_timestamp () рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ;
рдШреЛрд╖рд┐рдд t_end рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк;
рд╢реБрд░реВ рдХрд░рдирд╛
рдпрджрд┐ $ 1 <= 0 рддреЛ рдлрд┐рд░ рд╡рд╛рдкрд╕реА, рдХреБрдЫ рдЧрд▓рдд: history_days рддрд░реНрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП '; рдЕрдВрдд рдЕрдЧрд░;
рдпрджрд┐ $ 2 <= 0 рддреЛ рдлрд┐рд░ рд╡рд╛рдкрд╕реА, рдХреБрдЫ рдЧрд▓рдд: рдЯреНрд░реЗрдВрдбреНрд╕_рдбреЗ рддрд░реНрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП '; рдЕрдВрдд рдЕрдЧрд░;
рдЕрдЧрд░ $ 3 <= 0 рддреЛ рдлрд┐рд░ рд╡рд╛рдкрд╕реА, рдХреБрдЫ рдЧрд▓рдд: str_days рддрд░реНрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП '; рдЕрдВрдд рдЕрдЧрд░;
clock_today_start = extract (рджрд┐рдирд╛рдВрдХ_trunc ('рджрд┐рди', рдЕрдм) ()) :: int;
clock_delete_less_history = extract (date_trunc ('рджрд┐рди', рдЕрдм) () рд╕реЗ - ($ 1 :: рдкрд╛рда || 'рджрд┐рди') :: рдЕрдВрддрд░рд╛рд▓) :: int
clock_delete_less_trends = extract (date_trunc ('рджрд┐рди', рдЕрдм) () рд╕реЗ - ($ 2 :: рдкрд╛рда || 'рджрд┐рди') :: рдЕрдВрддрд░рд╛рд▓) :: int
clock_delete_less_strings = extract (date_trunc ('рджрд┐рди', рдЕрдм) () рд╕реЗ - ($ 3 :: рдкрд╛рда || 'рджрд┐рди') :: рдЕрдВрддрд░рд╛рд▓) :: int
clock_delete_less = рдХрдо рд╕реЗ рдХрдо (clock_delete_less_history, clock_delete_less_trends, clock_delete_less_strings);
- рдзреНрдпрд╛рди рджреЗрдВ 'рдШрдбрд╝реА_рдЯреЛрдбреЗ_рд╕реНрдЯрд╛рд░реНрдЯ% (%)', to_timestamp (рдШрдбрд╝реА_рдЯреЛрдбреЗ_рд╕реНрдЯрд╛рд░реНрдЯ), рдШрдбрд╝реА_рдЯреЛрдбреЗ_рд╕реНрдЯрд╛рд░реНрдЯ;
- рд╕реВрдЪрдирд╛ рдХрд╛ рдиреЛрдЯрд┐рд╕ 'clock_delete_less_history% (%)% рджрд┐рди', to_timestamp (clock_delete_less_history), clock_delete_less_history, $ 1;
- рд╕реВрдЪрдирд╛ рдХрд╛ рдиреЛрдЯрд┐рд╕ 'рдШрдбрд╝реА_рдбреЗрд▓реА_рд▓реЗрд╕_рдЯреНрд░реЗрдВрдбреНрд╕% (%)% рджрд┐рди', to_timestamp (рдШрдбрд╝реА_рдбреЗрд▓реА_рд▓реЗрд╕_рдЯреНрд░реЗрдВрдбреНрд╕), рдШрдбрд╝реА_рдбреЗрд▓реЗрдЯреА_рд▓реЗрд╕_рдЯреНрд░реЗрдВрдбреНрд╕, $ 2;
- рд╕реВрдЪрдирд╛ рдХрд╛ рдиреЛрдЯрд┐рд╕ 'clock_delete_less_strings% (%)% days', to_timestamp (clock_delete_less_strings), clock_delete_less_strings, $ 3;
рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо рдХреЗ рд▓рд┐рдП, рдШрдбрд╝реА рд╡рд┐рднрд╛рдЬрди рдореЗрдВ select_max, path_max pathman_partition_list рдЬрд╣рд╛рдВ рд╕реЗ
range_max :: int <= рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ (рдШрдбрд╝реА_delete_less_history, clock_delete_less_trends, clock_delete_less_strings)
(рд╡рд┐рднрд╛рдЬрди :: рдкрд╛рда рдЬреИрд╕реЗ 'рдЗрддрд┐рд╣рд╛рд╕%' рдпрд╛ рд╡рд┐рднрд╛рдЬрди :: рдкрд╛рда рдЬреИрд╕реЗ 'рд░реБрдЭрд╛рди%') рд╡рд┐рднрд╛рдЬрди asc рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢
рдкрд╛рд╢
рдЕрдЧрд░ (рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо ~ 'history_uint_ \ d' рдФрд░ clock_max :: int <= clock_delete_less_istory)
рдпрд╛ (part_name ~ 'history_ \ d' рдФрд░ clock_max :: int <= clock_delete_less_history)
рдпрд╛ (part_name ~ 'Trends_ \ d' рдФрд░ clock_max :: int <= clock_delete_less_trends)
рдпрд╛ (рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо ~ 'history_log_ \ d' рдФрд░ clock_max :: int <= clock_delete_less_strants)
рдпрд╛ (рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо ~ 'history_str_ \ d' рдФрд░ clock_max :: int <= clock_delete_less_strax)
рдпрд╛ (рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо ~ 'history_text_ \ d' рдФрд░ clock_max :: int <= clock_delete_less_strings)
рддреЛ
itter = iterator + 1;
рдиреЛрдЯрд┐рд╕ '%', рдкреНрд░рд╛рд░реВрдк (''% s% s ', рдкрд╛рд░реНрдЯреАрд╢рди_рдирд╛рдо, рдШрдбрд╝реА_рдореИрдХреНрд╕) рдмрдврд╝рд╛рдПрдВ;
рдЕрдзрд┐рдХрддрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (reltuples :: int), pg_size_pretty (рд░рд╛рд╢рд┐ (pg_relation_size (pg_class.oid))) рдХреЗ рд░реВрдк рдореЗрдВ "рдЖрдХрд╛рд░" рд╕реЗ pg_class рдЬрд╣рд╛рдБ relname рдЬреИрд╕реЗ рдкрд╛рд░реНрдЯреАрд╢рди / рдирд╛рдо || '%' рд╕рдЦреНрдд buf_table_len, buf_table_size рдореЗрдВ;
if result_str! = '' рддреЛ result_str = result_str || ''; рдЕрдВрдд рдЕрдЧрд░;
result_str = result_str || рд╕реНрд╡рд░реВрдк ('% s (dt <% s, len% s,% s)', рд╡рд┐рднрд╛рдЬрди_рдирд╛рдо, to_char (to_timestamp (clock_max :: int), 'YYYY-MM-DD'), buf_table_len, buf_table_size);
рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рд░реВрдк ('% s рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдбреНрд░реЙрдк рдЯреЗрдмрд▓', рдкрд╛рд░реНрдЯреАрд╢рди_рдирд╛рдо);
рдЕрдВрдд рдЕрдЧрд░;
рдЕрдВрдд рд▓реВрдк;
рдЕрдЧрд░ iterator = 0 рддреЛ result_str = рд╕реНрд╡рд░реВрдк ('рдкреБрд░рд╛рдиреЗ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рднрд╛рдЬрди рдирд╣реАрдВ рд╣реИ, рддреЛ% s рджрд┐рдирд╛рдВрдХ', to_char (to_timestamp (clock_delete_less), 'YYYY-MM-DD-DD));
рдФрд░ рдкрд░рд┐рдгрд╛рдо_ рд╕реНрд╡рд░реВрдк = рдкреНрд░рд╛рд░реВрдк ('% s рд╕реЗрдХрдВрдб рдореЗрдВ% s рд╡рд┐рднрд╛рдЬрди рд╣рдЯрд╛рдП рдЧрдП:', рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рдЯреНрд░рдВрдХ (рдЕрд░реНрдХ (рд╕реЗрдХрдВрдб рд╕реЗ (рдШрдбрд╝реА_рд╕реНрдЯрд┐рдореИрдореНрдк) -) - t_start)) :: рд╕рдВрдЦреНрдпрд╛рддреНрдордХ, 3)) || result_str;
рдЕрдВрдд рдЕрдЧрд░;
- рдзреНрдпрд╛рди рджреЗрдВ '%', result_str;
рд╡рд╛рдкрд╕реА result_str;
рдЕрдкрд╡рд╛рдж рддрдм рдЬрдм рдЕрдиреНрдп
рд╕реНрдЯреИрдХ рдХрд┐рдП рдЧрдП рдбрд╛рдпрдЧреНрдиреЙрд╕реНрдЯрд┐рдХреНрд╕ рдЗрд░реЗрдЯреА_рдбреЗрдЯреЗрд▓ = PG_EXCEPTION_CONTEXT;
рд░рд┐рдЯрд░реНрди рдлреЙрд░реНрдореЗрдЯ ('рдЕрдк, рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝:% s [рдЗрд░ рдХреЛрдб% s],% s', sqlerrm, sqlstate, рдЕрдирд┐рдпрдорд┐рдд_detail);
рдЕрдВрдд;
$ рд╕рдорд╛рд░реЛрд╣ $;
рд╕реНрд╡рддрдГ-рд╕реНрд╡рдЪреНрдЫ рд╡рд┐рднрд╛рдЬрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде "рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдирд┐рдЯрд░" рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдкреНрд░рдХрд╛рд░: рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдирд┐рдЯрд░
- рдирд╛рдо: delete_old_history_partitions
- рдХреБрдВрдЬреА: db.odbc.select [delete_old_history_partitions, zabbix]
- sql рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐: delete_old_partitions (3, 30, 30) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
# рдпрд╣рд╛рдВ, delete_old_partitions рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рджрд┐рдиреЛрдВ рдореЗрдВ рднрдВрдбрд╛рд░рдг рд╕рдордп рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ
# рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдВрдпреБрдХреНрдд рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди
- рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░: рдкрд╛рда
- рдЕрджреНрдпрддрди рдЕрдВрддрд░рд╛рд▓: 0
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░рд╛рд▓: h2 рдореЗрдВ рдЕрдиреБрд╕реВрдЪрд┐рдд
- рдЗрддрд┐рд╣рд╛рд╕ рднрдВрдбрд╛рд░рдг рдЕрд╡рдзрд┐: 90 рджрд┐рди
- рдбреЗрдЯрд╛ рдПрд▓рд┐рдореЗрдВрдЯ рдЧреНрд░реБрдк: рдбреЗрдЯрд╛рдмреЗрд╕
рдирддреАрдЬрддрди, рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреА рд╕рдлрд╛рдИ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:
2019-09-16 02:00:00, 0.024 рд╕реЗрдХрдВрдб рдореЗрдВ 3 рд╡рд┐рднрд╛рдЬрди рд╣рдЯрд╛рдП рдЧрдП: Trends_78 (dt <2019-08-17, len 1, 48 kB), history_193 (dt <2019-09-13, len 85343, 9448 kB ), History_uint_186 (dt <2019-09-13, рд▓реЗрди 27969, 3480 kB)
рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдбреЗрдЯрд╛ рддрддреНрд╡ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЗ рдСрдЯреЛ-рд╡рд┐рд▓реЛрдкрди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдШрд░ рдХреА рдиреМрдХрд░рд╛рдиреА Zabbix рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдкреНрд░рд╡реГрддреНрддрд┐ рдХреА рд╕рдлрд╛рдИ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
zabbix рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, "рдкреНрд░рд╢рд╛рд╕рди" -> рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг -> рдХреЛрдиреЗ рдореЗрдВ рд╕реВрдЪреА рд╕реЗ "рд╕реНрдкрд╖реНрдЯ рдЗрддрд┐рд╣рд╛рд╕" рдЪреБрдиреЗрдВ -> рдЕрдХреНрд╖рдо рдХрд░реЗрдВ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ "рдЗрддрд┐рд╣рд╛рд╕" рдФрд░ "рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛" рдЪреЗрдХрдмреЙрдХреНрд╕ред рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╛рд░рдгреА рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмреНрд░рд┐рди (рдШрдбрд╝реА) рдФрд░ рдмреАрдЯреА-рдЬрд┐рди (рдЖрдЗрдЯрдо) рдореЗрдВ рдмрджрд▓рдирд╛
PostgreSQL рдЗрдВрдбреЗрдХреНрд╕ рдкрд░ рдЕрд╡рд▓реЛрдХрди рд▓реЗрдЦреЛрдВ рдХреА
рдЙрддреНрдХреГрд╖реНрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП
рдПрд░реНрдЧреЛрд╡ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред
рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реА PostgresPRO рдЯреАрдоредрдЗрди рд▓реЗрдЦреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдХрд░, рд╣рдордиреЗ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓реЛрдВ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рддреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рд╛ рдФрд░ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ рдХрд┐рди рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдВрдЧреЗредрдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рд╕рдордЧреНрд░ рд╕реВрдЪрдХрд╛рдВрдХ btree (рдЖрдЗрдЯрдорд┐рдб, рдШрдбрд╝реА) рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреЗ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рддреЗрдЬ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдиреАрд░рд╕ рдЖрджреЗрд╢ рджрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд┐рд╕реНрдХ рдкрд░ "рдЬрд╝реЛрд░ рд╕реЗ рдорд╛рд░рддрд╛ рд╣реИ" рдЬрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ - 10 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ редрдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐ рдШрдВрдЯрд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЖрдБрдХрдбрд╝реЛрдВ рджреНрд╡рд╛рд░рд╛, рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдо рддреМрд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдпреЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд╕реНрддрд░ рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИредрд╡рд┐рднрд┐рдиреНрди рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рд╕рдлрд▓ рд╕рдВрдпреЛрдЬрди рд╕рд╛рдордиреЗ рдЖрдпрд╛ рдерд╛: рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреЗ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдШрдбрд╝реА рдХреНрд╖реЗрддреНрд░ рдкрд░ рдмреИрдЧрди рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рдЖрдЗрдЯрдо рдлрд╝реАрд▓реНрдб рдкрд░ btree-gin рд╕реВрдЪрдХрд╛рдВрдХредрдмреНрд░рд┐рди рдЗрдВрдбреЗрдХреНрд╕ рдиреАрд░рд╕ рд░реВрдк рд╕реЗ рдмрдврд╝рддреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЗ рддрдереНрдп рдХрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк, рдпрд╛рдиреАред рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдПред рдФрд░ btree-gin index рдореВрд▓ рд░реВрдк рд╕реЗ рдорд╛рдирдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдПрдХ gin рдЗрдВрдбреЗрдХреНрд╕ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдмреНрд░рд┐рдЧреНрд░реА рд╕реЗ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЬрд┐рди рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреВрд░рдХ рд╣реИред Btree-gin index рдХреЛ PostgreSQL рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИредрдЗрд╕ рдЕрдиреБрдХреНрд░рдордг рд░рдгрдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛рдХрд░рдг рдХреА рдЧрддрд┐ рдФрд░ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рддреБрд▓рдирд╛ рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИред рд▓реЛрдб рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рддреАрди рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рддреАрди рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЬрдорд╛ рдХрд┐рдпрд╛:рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛:- рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдХрд╛ рдбреЗрдЯрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рддреАрди рджрд┐рди (рдХреБрд▓ 1660 рд░рд┐рдХреЙрд░реНрдб)
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдЪреБрдиреЗрдВ * рдЬрд╣рд╛рдВ рдЖрдЗрдЯрдо = 313300
рдФрд░ рдШрдбрд╝реА> = рдЕрд░реНрдХ ('2019-03-09 00:00:00' :: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реЗ) :: int
рдФрд░ рдШрдбрд╝реА <= рдирд┐рдХрд╛рд▓рдиреЗ ('2019-04-09 12:00:00' рдХрд╛ рд╕рдордп :: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк) :: int;
- рдПрдХ рджрд┐рди рдХреЗ 12 рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП (рдХреБрд▓ 649 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ)
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдЪреБрдиреЗрдВ * рдЬрд╣рд╛рдВ рдЖрдЗрдЯрдо = 310650
рдФрд░ рдШрдбрд╝реА> = рдЕрд░реНрдХ ('2019-04-09 00:00:00' :: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реЗ) :: int
рдФрд░ рдШрдбрд╝реА <= рдирд┐рдХрд╛рд▓рдиреЗ ('2019-04-09 12:00:00' рдХрд╛ рд╕рдордп :: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк) :: int;
- рдПрдХ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП (рдХреБрд▓ 61 рд░рд┐рдХреЙрд░реНрдб):
рдЗрддрд┐рд╣рд╛рд╕_рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рдЪреБрдирд┐рдВрджрд╛ рдЧрдгрдирд╛ (*) рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдЗрдЯрдорд┐рдб = 336540
рдФрд░ рдШрдбрд╝реА> = рдЕрд░реНрдХ ('2019-04-08 11:00:00' :: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реЗ) :: int
рдФрд░ рдШрдбрд╝реА <= рдЕрд░реНрдХ ('2019-04-08 12:00:00' рдХрд╛ рд╕рдордп :: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк) :: int;
рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдереЗ:* MB рдореЗрдВ рдЖрдХрд╛рд░ рддреАрди рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ** рдЯрд╛рдЗрдк 1 рдЕрдиреБрд░реЛрдз - 3 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛, рдЯрд╛рдЗрдк 2 рдЕрдиреБрд░реЛрдз - 12 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛, рдЯрд╛рдЗрдк 3 рдЕрдиреБрд░реЛрдз - рдПрдХ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рддреБрд▓рдирд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред 100 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд╛рдирдХ рдХрдореНрдкреЛрдЬрд┐рдЯ рдЗрдВрдбреЗрдХреНрд╕ рдмреАрдЯреАрдЖрд░ рдХреЛ рджреЛ рдЗрдВрдбреЗрдХреНрд╕ рдмреНрд░рд┐рди рдФрд░ рдмреАрдЯреНрд░реА-рдЬрд┐рди рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдкрд░ рд▓рд╛рднрдХрд╛рд░реА рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИредрдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдФрд░ рдкрд╛рд░реНрдЯреАрд╢рдирд┐рдВрдЧ рдХреА рджрдХреНрд╖рддрд╛ рдЗрддрд┐рд╣рд╛рд╕_рдЙрдВрдЯ рдФрд░ рдЯреНрд░реЗрдВрдбреНрд╕_рдЗрдВрдЯ рдЯреЗрдмрд▓ рдореЗрдВ рдирдП рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ (рдЬреЛрдбрд╝ рдкреНрд░рддрд┐ рдХреНрд╡реЗрд░реА рдФрд╕рддрди 2000 рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ)редрдЬрд╝реИрдмрд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдореЙрдиреАрдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рд╕рдордЧреНрд░ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ 10 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдбреЗрдЯрд╛ рд╡реЙрд▓реНрдпреВрдо рдЬрдорд╛ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдирдХ рдмреАрдЯреАрдЖрд░рдИ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ "рд╕реВрдЬрди" рдХреЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рднрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдмрд╣реБ-рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╕реЗ рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рдХрд╛ рднрд╛рд░реА рднрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдЯреНрд░рд┐рдХ) ation), рдЬреЛ рдЕрдВрддрддрдГ рдбрд┐рд╕реНрдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдордп рдФрд░ CPU (iowait рдореАрдЯреНрд░рд┐рдХ) рд╕реЗ рдбрд┐рд╕реНрдХ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдмрдврд╝рд╛рддрд╛ рд╣реИредрд╣рд╛рд▓рд╛рдВрдХрд┐, рддрд╛рдХрд┐ btree-gin index рдмрд┐рдЧрд┐рдВрдЯ (in8) рдбреЗрдЯрд╛ рдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗ, рдЬреЛ рдХрд┐ рдЖрдЗрдЯрдорд┐рдб рдХреЙрд▓рдо рд╣реИ, рдЖрдкрдХреЛ btree-gin рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП bigint рдЯрд╛рдЗрдк рдХреЗ рдСрдкрд░реЗрдЯрд░реНрд╕ рдХреЗ рдкрд░рд┐рд╡рд╛рд░ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛редBtree-gin index рдХреЗ рд▓рд┐рдП рдПрдХ bigint рдСрдкрд░реЗрдЯрд░ рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛/*
gin biginteger integer .
- gin int2, int4, int8,
bigint , bigint (<= 2147483647)
intger_ops, :
create index on tablename using gin(columnname int8_family_ops) with (fastupdate = false);
*/
-- btree_gin
CREATE EXTENSION btree_gin;
CREATE OPERATOR FAMILY integer_ops using gin;
CREATE OPERATOR CLASS int4_family_ops
FOR TYPE int4 USING gin FAMILY integer_ops
AS
OPERATOR 1 <,
OPERATOR 2 <=,
OPERATOR 3 =,
OPERATOR 4 >=,
OPERATOR 5 >,
FUNCTION 1 btint4cmp(int4,int4),
FUNCTION 2 gin_extract_value_int4(int4, internal),
FUNCTION 3 gin_extract_query_int4(int4, internal, int2, internal, internal),
FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),
FUNCTION 5 gin_compare_prefix_int4(int4,int4,int2, internal),
STORAGE int4;
CREATE OPERATOR CLASS int8_family_ops
FOR TYPE int8 USING gin FAMILY integer_ops
AS
OPERATOR 1 <,
OPERATOR 2 <=,
OPERATOR 3 =,
OPERATOR 4 >=,
OPERATOR 5 >,
FUNCTION 1 btint8cmp(int8,int8),
FUNCTION 2 gin_extract_value_int8(int8, internal),
FUNCTION 3 gin_extract_query_int8(int8, internal, int2, internal, internal),
FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),
FUNCTION 5 gin_compare_prefix_int8(int8,int8,int2, internal),
STORAGE int8;
ALTER OPERATOR FAMILY integer_ops USING gin add
OPERATOR 1 <(int4,int8),
OPERATOR 2 <=(int4,int8),
OPERATOR 3 =(int4,int8),
OPERATOR 4 >=(int4,int8),
OPERATOR 5 >(int4,int8);
ALTER OPERATOR FAMILY integer_ops USING gin add
OPERATOR 1 <(int8,int4),
OPERATOR 2 <=(int8,int4),
OPERATOR 3 =(int8,int4),
OPERATOR 4 >=(int8,int4),
OPERATOR 5 >(int8,int4);
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЗрд╖реНрдЯрддрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ Zabbix рдХреЗ рд▓рд┐рдП PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреА рд╣реИред/*
*/
--
drop index history_1;
drop index history_uint_1;
drop index history_str_1;
drop index history_text_1;
drop index history_log_1;
-- PK
-- ( , )
alter table trends drop constraint trends_pk;
alter table trends_uint drop constraint trends_uint_pk;
-- bree-gin itemid
-- btree-gin bigint
-- https://habr.com/ru/company/postgrespro/blog/340978/#comment_10545932
-- create extension btree_gin;
create index on history using gin(itemid int8_family_ops) with (fastupdate = false);
create index on history_uint using gin(itemid int8_family_ops) with (fastupdate = false);
create index on history_str using gin(itemid int8_family_ops) with (fastupdate = false);
create index on history_text using gin(itemid int8_family_ops) with (fastupdate = false);
create index on history_log using gin(itemid int8_family_ops) with (fastupdate = false);
create index on trends using gin(itemid int8_family_ops) with (fastupdate = false);
create index on trends_uint using gin(itemid int8_family_ops) with (fastupdate = false);
-- bree-gin itemid
-- brin 128 ,
-- ,
-- https://habr.com/ru/company/postgrespro/blog/346460/
create index on history using brin(clock) with (pages_per_range = 128);
create index on history_uint using brin(clock) with (pages_per_range = 128);
create index on history_str using brin(clock) with (pages_per_range = 128);
create index on history_text using brin(clock) with (pages_per_range = 128);
create index on history_log using brin(clock) with (pages_per_range = 128);
create index on trends using brin(clock) with (pages_per_range = 128);
create index on trends_uint using brin(clock) with (pages_per_range = 128);
100 рдЯрди рдкреНрд░рддрд┐ рдорд┐рдирдЯ (рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ 100 рдЯрди рдФрд░ history_uint рдореЗрдВ 100 рдЯрди) рдХреА рддреАрд╡реНрд░рддрд╛ рдкрд░ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП рдмреНрд░рд┐рди рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ 512 рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЬрд╝реЛрди рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдердорд┐рдХ рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рджреЛ рдмрд╛рд░ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред 128 рдкреГрд╖реНрдареЛрдВ рдХреЗ рдорд╛рдирдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реИ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд░рд┐рди рдЗрдВрдбреЗрдХреНрд╕ рдмрд╣реБрдд рдХрдо рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╝реЛрди рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдареАрдХ-рдареАрдХ рдХрд░рдХреЗ рдЗрд╕рдХреА рдЧрддрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╢рд░реНрддреЗ рдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рджрд░ рдореЗрдВ рдмрд╣реБрдд рдмрджрд▓рд╛рд╡ рди рд╣реЛредрдирддреАрдЬрддрди, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рд╕реАрдорд╛ рд╣реИ: рдЯреИрдм "рд╣рд╛рд▓ рдХреЗ рдбреЗрдЯрд╛" рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЕрдВрддрд┐рдо рджреЛ рдорд╛рдиреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рд▓реЗрддреЗ рд╣реБрдП рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдорд╛рдиреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдЕрд▓рдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рдРрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЪреБрдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрддрдиреА рд╣реА рд▓рдВрдмреА рдХреНрд╡реЗрд░реА рдЪрд▓реЗрдЧреАред рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдбреЗрдЯрд╛ рддрдм рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм btree index (itemid, clock desc) рдХреЛ рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╛рд░рдгреА рдореЗрдВ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рд╡рд░реНрд╕ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд┐рд╕реНрдХ рдкрд░ рдмреЗрд╢рдХ "swells" рдХрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИредрдЗрд╕рд▓рд┐рдП, рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ:- ┬л ┬╗ 100 (.. , ┬л ┬╗ )
- Zabbix , , ┬л ┬╗
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ, рдФрд░ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рд╛рд▓ рдХреЗ рдбреЗрдЯрд╛ рдЯреИрдм рдкрд░ рдХрд╛рдлреА рдмрдбрд╝реЗ рдЪрдпрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЬрд╝реИрдмрд┐рдХреНрд╕ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рд╕реАрдорд╛ рд╣реИ рдЯреИрдм "рд╣рд╛рд▓ рдХреЗ рдбреЗрдЯрд╛" рдкрд░ - рдЗрд╕рд▓рд┐рдП, рдЬрдм рдореИрдВрдиреЗ 5000 рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЧрдгрдирд╛ рдХреА, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рд╡реЗрдм рдкреЗрдЬ рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рдЗрддрдиреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрд╛)ред
рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг pg_stat_statements
Pg_stat_statements рдкреВрд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ PostgreSQL рд▓реЙрдЧ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредPg_stat_statements рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛psql:
CREATE EXTENSION pg_stat_statements;
postgresql.conf:
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000 # sql , ( );
pg_stat_statements.track = all # all - ( ), top - /, none -
pg_stat_statements.save = true #
:
SELECT pg_stat_statements_reset();
:
select substring(query from '[^(]*') as query_sub, sum(calls) as calls, avg(mean_time) as mean_time from pg_stat_statements where query ~ 'insert into' or query ~ 'update trends' group by substring(query from '[^(]*') order by calls desc
Zabbix рдореЗрдВ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ vfs.dev.read рдФрд░ vfs.dev.write рдкреИрд░рд╛рдореАрдЯрд░ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рджрд┐рдП рдЧрдП рд╣реИрдВред рдпреЗ рд╡рд┐рдХрд▓реНрдк рдбрд┐рд╕реНрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреА рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдорд╛рдирджрдВрдб рдЙрдкрдпреЛрдЧ рдХрд╛рд░рдХ, рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдФрд░ рдбрд┐рд╕реНрдХ рд▓реЛрдб рдХрддрд╛рд░ рд▓реЛрдб рд╣реИрдВредрдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдЪреНрдЪ рдбрд┐рд╕реНрдХ рд▓реЛрдб cpu рдХреЗ рдЙрдЪреНрдЪ iowait рдХреЗ рд╕рд╛рде рдФрд░ sql рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд┐рдирд╛ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдорд╛рдирдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдПрдХ zabbix рд╕рд░реНрд╡рд░ рдХреЗ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдорд┐рддреНрд░ рд╕реЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛lesovsky рдФрд░ рдмреЗрд╣рддрд░: рдЕрдм jost рд╕рдордп рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ iostat рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ, рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдВрддрд┐рдо рдирд┐рдЧрд░рд╛рдиреА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВредрдЬрдмрдХрд┐ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд▓рдВрдмрд┐рдд рд╣реИ, рдЖрдк рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд┐рд╕реНрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редрд╕рднреА рд╡рд░реНрдгрд┐рдд рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рдЖрдк рдореБрдЦреНрдп Zabbix рд╕рд░реНрд╡рд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдкреИрдирд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдбрд┐рд╕реНрдХ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбрд┐рд╕реНрдХ (рдпрджрд┐ рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ) рдХреЗ рд▓рд┐рдП iowait cpu рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рдЧреНрд░рд╛рдл рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ (sda рдореБрдЦреНрдп рдбрд┐рд╕реНрдХ рд╣реИ, sdc рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХ рд╣реИ):
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░
DBMS рдХреА рд╕реНрдерд╛рдкрдирд╛, рдЕрдиреБрдХреНрд░рдордг рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рдж, рдЖрдк рд╡рд░реНрдЯрд┐рдХрд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рд░реНрд╡рд░ рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП: RAM рдЬреЛрдбрд╝реЗрдВ, рдбреНрд░рд╛рдЗрд╡ рдХреЛ рд╕реЙрд▓рд┐рдб-рд╕реНрдЯреЗрдЯ рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдПрдХ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж рд╣реА рдРрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИредрдПрдХ рд╡рд┐рддрд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдирд╛
рдордзреНрдпрдо рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рд╡рд┐рддрд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдПрдВ: рдпрд╛ рддреЛ рд╢рд╛рд░реНрдк рдХрд░реЗрдВ рдпрд╛ рдорд╛рд╕реНрдЯрд░ рджрд╛рд╕ рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рдФрд░ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ (рдХреИрд╕реЗ рдЧрдВрджрдЧреА рдФрд░ рд▓рд╛рдареА рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рдврд╛рд▓рдирд╛) , рд╕рд╛рде рд╣реА рд╕рд╛рде рдКрдкрд░ рд╡рд░реНрдгрд┐рдд Zabbix рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдиреБрдХреВрд▓рди рддрдХрдиреАрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ pg_pathman рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ TimescaleDB рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдордг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдЗрд╕ рдмреАрдЪ, рдХреЛрдИ рдХреЗрд╡рд▓ рдпрд╣ рдЖрд╢рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрдкрдпреЛрдЧреА рдФрд░ рдЬреНрдЮрд╛рдирд╡рд░реНрдзрдХ рд╣реЛ!