How a Virtual Address Space Is Partitioned on WINNT.

本文介绍不同架构下Windows操作系统如何划分进程的地址空间,包括x86 32位、x86 32位(3GB用户模式)、x64 64位及IA-64 64位四种情况,详细说明了各分区如NULL指针赋值区、用户模式区、内核模式区等的起始地址。


下面一表摘自windows  via C/C++


Table 13-1: How a Process' Address Space Is Partitioned
Open table as spreadsheet

Partition

x86 32-Bit Windows

x86 32-Bit Windows with 3 GB User-Mode

x64 64-Bit Windows

IA-64 64-Bit Windows

NULL-Pointer Assignment

0x00000000

0x00000000

0x00000000'00000000

0x00000000'00000000

0x0000FFFF

0x0000FFFF

0x00000000'0000FFFF

0x00000000'0000FFFF

User-Mode

0x00010000

0x00010000

0x00000000'00010000

0x00000000'00010000

0x7FFEFFFF

0xBFFEFFFF

0x000007FF'FFFEFFFF

0x000006FB'FFFEFFFF

64-KB Off-Limits

0x7FFF0000

0xBFFF0000

0x000007FF'FFFF0000

0x000006FB'FFFF0000

0x7FFFFFFF

0xBFFFFFFF

0x000007FF'FFFFFFFF

0x000006FB'FFFFFFFF

Kernel-Mode

0x80000000

0xC0000000

0x00000800'00000000

0x000006FC'00000000

0xFFFFFFFF

0xFFFFFFFF

0xFFFFFFFF'FFFFFFFF

 

### MySQL 中的分区管理错误:Partition management on a not partitioned table is not possible 在 MySQL 中,若尝试对一个未进行分区的表执行分区管理操作,例如使用 `ALTER TABLE ... ADD PARTITION`,会遇到如下错误信息: ``` ERROR 1505 <HY000> Partition management on a not partitioned table is not possible ``` 这一错误表明,MySQL 不允许对一个非分区表执行分区管理操作。这意味着如果一个表在创建时未定义为分区表,则不能在后续通过 `ALTER TABLE` 添加分区[^1]。 要对表进行分区,必须在创建表时就定义分区结构。例如,创建一个按 `year` 字段进行范围分区的表,可以使用如下语句: ```sql CREATE TABLE sales ( id INT NOT NULL, year DATE NOT NULL, amount DECIMAL(10,2), PRIMARY KEY (id, year) ) PARTITION BY RANGE COLUMNS(year) ( PARTITION p2020 VALUES LESS THAN ('2021-01-01'), PARTITION p2021 VALUES LESS THAN ('2022-01-01'), PARTITION p2022 VALUES LESS THAN ('2023-01-01') ); ``` 若已有表未分区,但希望对其进行分区,则必须先将表结构导出,然后使用分区定义重新创建表,并将数据导入新表中。例如,可以使用如下步骤: 1. 导出原表数据: ```sql SELECT * INTO OUTFILE '/tmp/sales.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM sales; ``` 2. 删除原表并创建带分区的新表(如上例所示)。 3. 导入数据: ```sql LOAD DATA INFILE '/tmp/sales.csv' INTO TABLE sales FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; ``` 需要注意的是,MySQL 的分区实现中,允许将 `NULL` 值用于分区表达式,但 `NULL` 被视为小于任何非 `NULL` 值,类似于 `ORDER BY` 的处理方式。因此,在定义分区边界时应谨慎处理 `NULL` 值的情况[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值