!4721 【资源池化】SPQ支持Direct Read特性

Merge pull request !4721 from 阙鸣健/spq_0110
This commit is contained in:
opengauss_bot
2024-01-11 03:12:16 +00:00
committed by Gitee
13 changed files with 215 additions and 1 deletions

View File

@ -204,6 +204,8 @@ typedef struct knl_session_attr_spq {
int spq_scan_unit_size;
int spq_scan_unit_bit;
char *gauss_cluster_map;
double spq_small_table_threshold;
bool spq_enable_direct_read;
/* enable spq btbuild */
bool spq_enable_btbuild;

View File

@ -2756,6 +2756,12 @@ namespace spqopt {
class CXformFactory;
}
typedef struct SpqDirectReadEntry {
Oid rel_id;
BlockNumber nums;
List *spq_seq_scan_node_list;
} SpqDirectReadEntry;
typedef struct knl_u_spq_context {
/* dxl information */
spqdxl::CDXLMemoryManager* dxl_memory_manager;
@ -2793,6 +2799,7 @@ typedef struct knl_u_spq_context {
List *remoteQuerys;
List *adp_connections;
struct SnapshotData* snapshot;
List *direct_read_map;
} knl_u_spq_context;
#endif

View File

@ -663,6 +663,7 @@ typedef struct SpqSeqScan {
bool isFullTableScan;
bool isAdaptiveScan;
bool isDirectRead;
uint32 DirectReadBlkNum;
} SpqSeqScan;
#endif
/*

View File

@ -49,6 +49,9 @@ void seg_async_read(SMgrRelation reln, ForkNumber forknum, AioDispatchDesc_t **d
void seg_async_write(SMgrRelation reln, ForkNumber forknum, AioDispatchDesc_t **dList, int32 dn);
void seg_move_buckets(const RelFileNodeBackend &dest, const RelFileNodeBackend &src, List *bucketList);
bool seg_fork_exists(SegSpace *spc, SMgrRelation reln, ForkNumber forknum, const XLogPhyBlock *pblk);
void seg_direct_read(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, BlockNumber *blocknums, char *buffer,
BlockNumber *locBlock);
BlockNumber seg_direct_read_get_range(BlockNumber logic_id);
/* Read/write by physical block number; used for segment meta data */
void seg_physical_read(SegSpace *spc, RelFileNode &rNode, ForkNumber forknum, BlockNumber blocknum, char *buffer);

View File

@ -96,6 +96,7 @@ void df_ctrl_init(SegLogicFile *sf, RelFileNode relNode, ForkNumber forknum);
void df_open_files(SegLogicFile *sf);
void df_extend(SegLogicFile *sf, BlockNumber target_blocks);
void df_pread_block(SegLogicFile *sf, char *buffer, BlockNumber blocknum);
void df_direct_pread_block(SegLogicFile *sf, char *buffer, BlockNumber blocknum, BlockNumber *blocknums);
void df_pwrite_block(SegLogicFile *sf, const char *buffer, BlockNumber blocknum);
void df_fsync(SegLogicFile *sf);
void df_unlink(SegLogicFile *sf);