!4721 【资源池化】SPQ支持Direct Read特性
Merge pull request !4721 from 阙鸣健/spq_0110
This commit is contained in:
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -663,6 +663,7 @@ typedef struct SpqSeqScan {
|
||||
bool isFullTableScan;
|
||||
bool isAdaptiveScan;
|
||||
bool isDirectRead;
|
||||
uint32 DirectReadBlkNum;
|
||||
} SpqSeqScan;
|
||||
#endif
|
||||
/*
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user