|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因此,我们的第一个“米”,就是二进制日志binlog必须是rowbased的。在rowbase下,二进制日志binlog同时记录了更新前后的整行记录。对照|数据|数据库
又看到如许的一段话:
主键用整型会极年夜的进步查询效力,而字符型的对照开支要比整型的对照开支年夜良多,用字符型数据作主键会使数据拔出、更新与查询的效力下降。数据量小的时分这点下降大概不会被注重,但是当数据量年夜的时分,小的改善也可以进步体系的呼应速率。
我做了一个实行,用MSSQL企业办理器创建两张表TInt和TStr,
TInt
{
intId int PRIMARYKEY
intValue int
}
TStr
{
strId varchar(20) PRIMARYKEY
strValue varchar(20)
}
往这两张表数据分离为intId=intValue=1~300000,strId=strValue=1~300000。然后用mfc封装的odbc分离实行
intRslt.Open(CRecordset::dynaset,"SELECT*FROMTIntWHEREintId=123456",CRecordset::readOnly);
和
strRslt.Open(CRecordset::dynaset,"SELECT*FROMTSTRWHEREstrId=123456",CRecordset::readOnly);
一千次。
工夫分离是1392毫秒和1452毫秒
一样实行
intRslt.Open(CRecordset::dynaset,"SELECT*FROMTIntWHEREintValue=123456",CRecordset::readOnly);
和
strRslt.Open(CRecordset::dynaset,"SELECT*FROMTSTRWHEREstrValue=123456",CRecordset::readOnly);
一千次。
工夫分离是58955毫秒和172227毫秒
假如用MSSqlServer新建一个主键(PrimaryKey),SqlServer默许为它创建一个会萃(CLUSTERED)索引,用会萃索引来定位一个数据必要的对照次数应当是很少的。而拔出大概更新操纵大概招致整行挪动大批数据,但这关于int型和str型主键是一样的。
为何作者会如是说呢?如今我其实不以为把str型主键改成int型是进步数据库效力的关头,比拟利用数据库毗连池大概优化sql语句,这点效力微乎其微。
Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差 |
|