rowlock 在事务里有用吗?

yahle 2010-08-11 12:08:26

ALTER PROCEDURE [dbo].[UpdateReadTest]
AS
BEGIN
BEGIN TRANSACTION
declare @num int
select @num = Num from ReadTest rowlock where Id = 1
set @num = @num + 1
update ReadTest set Num = @num where Id = 1
--update ReadTest set Num = Num + 1 where Id = 1
COMMIT
END



今天在做多线程并发测试的时候,发现在事务里给查询数据加 rowlock 无效,谁能解答一下?
在4x1000以下看不出错误,但并发线程达到5以后开始出现数据错误。
...全文
204 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yahle 2010-11-26
  • 打赏
  • 举报
回复
up一次,上面的有同学能回答吗?
yahle 2010-08-12
  • 打赏
  • 举报
回复



static void changeNumTran(object id)
{
thradNum++;
for (int i = 0; i < 10000; i++)
{
int num;
SqlParameter param = new SqlParameter("@id", id);
DbHelperSQL.RunProcedure("UpdateReadTest2", new[] { param }, out num);
}
thradNum--;
}

// 将原始数据清零
DbHelperSQL.ExecuteSql("update ReadTest set Num = 0");
DateTime begin = DateTime.Now;
for (int j = 1; j <= 20; j++ )
for (int i = 0; i < 5; i++)
{
var thread = new Thread(ChangeNum);
//var thread = new Thread(changeNumTran);
thread.Start(j);
}

Thread.Sleep(100);
while (thradNum > 1)
Thread.Sleep(100);



我用c#做的开发,按照上面的做法,加xlock后的确能保证数据的准确性。
不过实测发现,好像这个时候不是行级锁,而变成表锁了。
上面的代码
for (int j = 1; j <= 20; j++ )
标示同时对20行做并发修改,如果是行级锁,没增加一个行并发,会将提高数据库的每秒的执行数,但从实际测试来看,并发操作5行数据和并发操作20行数据每秒执行的sql数是固定的。

这个是修改后的存储过程

ALTER PROCEDURE [dbo].[UpdateReadTest2]
@id int
AS
BEGIN
BEGIN TRANSACTION
declare @num int
select @num = Num from ReadTest where Id = @id
set @num = @num + 1
update ReadTest set Num = @num where Id = @id
waitfor DELAY '000:00:00.01' -- 延时,不让并发时不让数据库的io和cpu成为瓶颈
--update ReadTest set Num = Num + 1 where Id = 1
COMMIT
END


Angel1201 2010-08-11
  • 打赏
  • 举报
回复
或者设置事务的隔离级别为
seriallzable
Angel1201 2010-08-11
  • 打赏
  • 举报
回复
--try
from ReadTest with(holdlock,tablockx)
obuntu 2010-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xys_777 的回复:]

select @num = Num from ReadTest with(rowlock,xlock) where Id = 1
[/Quote]

参考这个。

你那加的方式不对,便成别名了。。
永生天地 2010-08-11
  • 打赏
  • 举报
回复
select @num = Num from ReadTest with(rowlock,xlock) where Id = 1
billpu 2010-08-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 yahle 的回复:]
SQL code

ALTER PROCEDURE [dbo].[UpdateReadTest]
AS
BEGIN
BEGIN TRANSACTION
declare @num int
select @num = Num from ReadTest rowlock where Id = 1
set @num = @num + 1
update Re……
[/Quote]
问一下楼主 是用什么测试控制并发线程的
hao1hao2hao3 2010-08-11
  • 打赏
  • 举报
回复

select @num = Num from ReadTest with(rowlock) where Id = 1
powercharge 2010-08-11
  • 打赏
  • 举报
回复
是这样吗???
MySQL中文参考手册.chm449kb0 译者序 1 MySQL的一般的信息1.1 什么是MySQL? 1.2 关于本手册1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5 MySQL稳定性? 1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQL 邮件列表及如何提问或报告错误2.1 MySQL邮件列表 2.2 提问或报告错误 2.3 怎样报告错误或问题 2.4 在邮件列表上回答问题的指南 3 MySQL的许可证和技术支持3.1 MySQL的许可证政策 3.2 MySQL 使用的版权3.2.1 可能的未来版权改变 3.3 MySQL商业性分发 3.4 许可证实例3.4.1 销售使用 MySQL的产品 3.4.2 销售MySQL相关的服务 3.4.3 ISP MySQL服务 3.4.4 运营一个使用MySQL的Web服务器 3.5 MySQL的许可证和技术支持费用3.5.1 付款信息 3.5.2 联系信息 3.6 商业性支持的类型3.6.1 基本的电子邮件支持 3.6.2 扩展的电子邮件支持 3.6.3 登录支持 3.6.4 扩展的登录支持 4 安装 MySQL 4.1 怎样获得MySQL 4.2 MySQL支持的操作系统 4.3 使用MySQL哪个版本 4.4 怎样和何时发布更新版本 4.5 安装布局 4.6 安装MySQL二进制代码分发4.6.1 Linux RPM注意事项 4.6.2 构造客户程序 4.6.3 系统特定的问题4.6.3.1 Linux 注意事项 4.6.3.2 HP-UX 注意事项 4.7 安装 MySQL源代码分发4.7.1 快速安装概述 4.7.2 运用补丁 4.7.3 典型的configure选项 4.8 编译问题? 4.9 MIT-pthreads 注意事项 4.10 Perl 安装说明4.10.1 在Unix操作系统上安装 Perl 4.10.2 在 Win32上安装 ActiveState Perl 4.10.3 在 Win32 上安装 MySQL Perl 分发 4.10.4 使用 Perl DBI/DBD接口遇到的问题 4.11 系统特定的问题4.11.1 Solaris注意事项 4.11.2 Solaris 2.7 注意事项 4.11.3 Solaris x86 注意事项 4.11.4 SunOS 4 注意事项 4.11.5 Linux (所有的Linux版本)注意事项4.11.5.1 Linux-x86 注意事项 4.11.5.2 RedHat 5.0 注意事项 4.11.5.3 RedHat 5.1 注意事项 4.11.5.4 Linux-SPARC 注意事项 4.11.5.5 Linux-Alpha 注意事项 4.11.5.6 MkLinux 注意事项 4.11.5.7 Qube2 Linux 注意事项 4.11.6 Alpha-DEC-Unix 注意事项 4.11.7 Alpha-DEC-OSF1 注意事项 4.11.8 SGI-Irix 注意事项 4.11.9 FreeBSD 注意事项 4.11.10 NetBSD 注意事项 4.11.11 BSD/OS 注意事项4.11.11.1 BSD/OS 2.x 注意事项 4.11.11.2 BSD/OS 3.x 注意事项 4.11.11.3 BSD/OS 4.x 注意事项 4.11.12 SCO 注意事项 4.11.13 SCO Unixware 7.0 注意事项 4.11.14 IBM-AIX 注意事项 4.11.15 HP-UX 注意事项 4.12 Win32 注意事项4.12.1 在 Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win32与Unix MySQL 比较 4.13 OS/2 注意事项 4.14 TcX 二进制代码 4.15 安装后期(post-installation)的设置与测试4.15.1 运行mysql_install_db 的问题 4.15.2 启动 MySQL 服务器的问题 4.15.3 自动启动和停止 MySQL 4.15.4 选项文件 4.16 升级和降级(downgrading)时有什么特别要做的事情吗?4.16.1 从一个 3.22 版本升级到 3.23 4.16.2 从一个 3.21 版本升级到 3.22 4.16.3 从一个 3.20 版本升级到 3.21 4.16.4 升级到其他的体系结构 5 MySQL 与标准的兼容性?5.1 MySQL对ANSI SQL92 的扩充 5.2 以ANSI模式运行 MySQL 5.3 MySQL相比ANSI SQL92的差别 5.4 MySQL 缺乏的功能5.4.1 子选择(Sub-selects) 5.4.2 SELECT INTO TABLE 5.4.3 事务(Transactions) 5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys)5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交/回卷(COMMIT / ROLLBACK) 6 MySQL 存取权限系统6.1 权限系统做什么 6.2 MySQL用户名和口令 6.3 与MySQL服务器连接 6.4 使你的口令安全 6.5 MySQL 提供的权限 6.6 权限系统工作原理 6.7 存取控制,阶段1:连接证实 6.8 存取控制,阶段2:请求证实 6.9 权限更改何时生效 6.10 建立初始的 MySQL权限 6.11 向MySQL增加新用户权限 6.12 怎样设置口令 6.13 存取拒绝(Access Denied)错误的原因 6.14 怎样使MySQL安全以对抗解密高手(cracker) 7 MySQL 语言参考7.1 文字:怎样写字符串和数字7.1.1 字符串 7.1.2 数字 7.1.3 十六进制值 7.1.4 NULL值 7.1.5 数据库,表,索引,列和别名的命名7.1.5.1 名字的大小写敏感性 7.2 用户变量 7.3 列类型7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型7.3.6.1 问题和日期类型 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3.6.4 YEAR类型 7.3.7 字符串类型7.3.7.1 CHAR和VARCHAR类型 7.3.7.2 BLOB和TEXT类型 7.3.7.3 ENUM类型 7.3.7.4 SET类型 7.3.8 为列选择正确的类型 7.3.9 列索引 7.3.10 多列索引 7.3.11 使用来自其他数据库引擎的列类型 7.4 用在SELECT和WHERE子句的函数7.4.1 分组函数 7.4.2 常用的算术运算 7.4.3 位函数 7.4.4 逻辑运算 7.4.5 比较运算符 7.4.6 字符串比较函数 7.4.7 类型转换运算符 7.4.8 控制流函数 7.4.9 数学函数 7.4.10 字符串函数 7.4.11 日期和时间函数 7.4.12 其他函数 7.4.13 与GROUP BY子句一起使用的函数 7.5 CREATE DATABASE (创建数据库)句法 7.6 DROP DATABASE (抛弃数据库)句法 7.7 CREATE TABLE (创建表)句法7.7.1 隐含(silent)的列指定变化 7.8 ALTER TABLE (改变表)句法 7.9 OPTIMIZE TABLE (优化表) 句法 7.10 DROP TABLE (抛弃表)句法 7.11 DELETE (删除)句法 7.12 SELECT (精选)句法 7.13 JOIN (联接)句法 7.14 INSERT (插入)句法 7.15 REPLACE (替换)句法 7.16 LOAD DATA INFILE (装载数据到文件)句法 7.17 UPDATE (更新)句法 7.18 USE (使用)句法 7.19 FLUSH (清除缓存)句法 7.20 KILL (杀灭)句法 7.21 SHOW (显示)句法(得到关于表,列等的信息) 7.22 EXPLAIN (解释)句法(得到关于SELECT的信息) 7.23 DESCRIBE (描述)句法(得到列的信息) 7.24 LOCK TABLES/UNLOCK TABLES (锁定表/解锁表)句法 7.25 SET OPTION (设置选项)句法 7.26 GRANT (授权)和REVOKE (撤回)句法 7.27 CREATE INDEX (创建索引)句法 7.28 DROP INDEX (抛弃索引)句法 7.29 注释句法 7.30 CREATE FUNCTION/DROP FUNCTION (创建函数/抛弃函数)句法 7.31 MySQL对保留字很挑剔吗? 8 MySQL 教程8.1 联接和断开服务器 8.2 输入查询 8.3 常用查询的例子8.3.1 列的最大值 8.3.2 拥有某个列的最大值的行 8.3.3 列的最大值:按组:只有值 8.3.4 拥有某个字段的组间最大值的行 8.3.5 使用外键 8.4 创建并使用一个数据库8.4.1 创建并选用一个数据库 8.4.2 创建一个数据库表 8.4.3 将数据装入数据库表 8.4.4 从一个数据库表检索信息8.4.4.1 选择所有数据 8.4.4.2 选择特定行 8.4.4.3 选择特定列 8.4.4.4 排序行 8.4.4.5 日期计算 8.4.4.6 NULL值操作 8.4.4.7 模式匹配 8.4.4.8 行计数 8.4.5 使用多个数据库表 8.5 获得数据库和表的信息 8.6 以批处理模式使用mysql 8.7 从"双胞项目"中查询8.7.1 找出所有非独处的双胞胎 8.7.2 显示关于双胞胎近况的表 9 MySQL 服务器功能9.1 MySQL 支持哪些语言?9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的性能10.1 优化概述 10.2 系统/编译时和启动参数的调节10.2.1 编译和链接如何影响 MySQL 的速度 10.2.2 磁盘问题10.2.2.1 为数据库和表格使用符号链接 10.2.3 调节服务器参数 10.2.4 MySQL 怎样打开和关闭数据库表 10.2.5 在同一个数据库中创建大量数据库表的缺点 10.2.6 为什么有这么多打开的表? 10.2.7 MySQL 怎样使用内存 10.2.8 MySQL 怎样锁定数据库表 10.2.9 数据库表级锁定的问题 10.3 使你的数据尽可能小 10.4 MySQL 索引的使用 10.5 存取或更新数据的查询速度10.5.1 估计查询性能 10.5.2 SELECT 查询的速度 10.5.3 MySQL 怎样优化WHERE子句 10.5.4 MySQL 怎样优化LEFT JOIN 10.5.5 MySQL 怎样优化LIMIT 10.5.6 INSERT查询的速度 10.5.7 UPDATE查询的速度 10.5.8 DELETE查询的速度 10.6 选择一种表类型10.6.1 静态(定长)表的特点 10.6.2 动态表的特点 10.6.3 压缩表的特点 10.6.4 内存(In-memory table)表的特点 10.7 其他优化技巧 10.8 使用你自己的基准测试 10.9 设计选择 10.10 MySQL 设计局限/折衷 10.11 可移植性 10.12 我们已将MySQL用在何处? 11 MySQL 基准套件 12 MySQL 实用程序12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 MySQL 压缩只读表生成器 13 维护 MySQL 安装13.1 使用myisamchk进行表维护和崩溃恢复13.1.1 myisamchk的调用语法 13.1.2 myisamchk的内存使用 13.2 13.2 建立一个数据库表维护规范 13.3 获得关于一个表的信息 13.4 使用myisamchk进行崩溃恢复13.4.1 怎样检查表的出错 13.4.2 怎样修复表 13.4.3 表优化 13.5 日志文件维护 14 为MySQL增加新函数14.1 增加一个新的用户定义函数14.1.1 UDF调用顺序 14.1.2 参数处理 14.1.3 返回值和出错处理 14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程15.1 analyse过程 15.2 编写一个过程 16 MySQL对 ODBC 支持16.1 MyODBC 支持的操作系统 16.2 怎样报告 MyODBC的问题 16.3 已知可用 MyODBC一起工作的程序 16.4 怎样填写 ODBC 管理程序的各种域 16.5 怎样在ODBC中获得一个AUTO_INCREMENT列的值 16.6 报告 MyODBC 的问题 17 与一些常用程序一起使用MySQL17.1 与 Apache一起使用 MySQL 18 问题和常见的错误18.1 如果 MySQL总是崩溃怎么办 18.2 使用 MySQL 时一些常见错误18.2.1 MySQL server has gone away错误 18.2.2 Can't connect to [local] MySQL server错误 18.2.3 Host '...' is blocked错误 18.2.4 Out of memory错误 18.2.5 Packet too large错误 18.2.6 The table is full错误 18.2.7 Commands out of sync in client错误 18.2.8 Ignoring user错误 18.2.9 Table 'xxx' doesn't exist错误 18.3 MySQL 怎样处理一个溢出的磁盘 18.4 怎样从一个文本文件运行SQL命令 18.5 MySQL 在哪儿存储临时文件 18.6 怎样保护"/tmp/mysql.sock"不被删除 18.7 Access denied 出错 18.8 怎样作为一个一般用户运行 MySQL 18.9 怎样重新设置一个忘记的口令 18.10 文件许可权限问题 18.11 文件没找到 18.12 使用DATE列的问题 18.13 时区问题 18.14 在搜索中的大小写敏感性 18.15 NULL值问题 18.16 alias问题 18.17 从相关的表中删除行 18.18 解决没有匹配行的问题 18.19 ALTER TABLE问题 18.20 怎样改变一个表中列的次序 19 解决MySQL 一些常见的问题19.1 数据库复制 19.2 数据库备份 19.3 在同一台机器上运行多个 MySQL 服务器 20 MySQL 客户工具和 API20.1 MySQL C API 20.2 C API数据类型 20.3 C API函数概述 20.4 C API函数描述20.4.1 mysql_affected_rows () 20.4.2 mysql_close () 20.4.3 mysql_connect () 20.4.4 mysql_change_user () 20.4.5 mysql_create_db () 20.4.6 mysql_data_seek () 20.4.7 mysql_debug () 20.4.8 mysql_drop_db () 20.4.9 mysql_dump_debug_info () 20.4.10 mysql_eof () 20.4.11 mysql_errno () 20.4.12 mysql_error () 20.4.13 mysql_escape_string () 20.4.14 mysql_fetch_field () 20.4.15 mysql_fetch_fields () 20.4.16 mysql_fetch_field_direct () 20.4.17 mysql_fetch_lengths () 20.4.18 mysql_fetch_row () 20.4.19 mysql_field_count () 20.4.20 mysql_field_seek () 20.4.21 mysql_field_tell () 20.4.22 mysql_free_result () 20.4.23 mysql_get_client_info () 20.4.24 mysql_get_host_info () 20.4.25 mysql_get_proto_info () 20.4.26 mysql_get_server_info () 20.4.27 mysql_info () 20.4.28 mysql_init () 20.4.29 mysql_insert_id () 20.4.30 mysql_kill () 20.4.31 mysql_list_dbs () 20.4.32 mysql_list_fields () 20.4.33 mysql_list_processes () 20.4.34 mysql_list_tables () 20.4.35 mysql_num_fields () 20.4.36 mysql_num_rows () 20.4.37 mysql_options () 20.4.38 mysql_ping () 20.4.39 mysql_query () 20.4.40 mysql_real_connect () 20.4.41 mysql_real_query () 20.4.42 mysql_reload () 20.4.43 mysql_row_seek () 20.4.44 mysql_row_tell () 20.4.45 mysql_select_db () 20.4.46 mysql_shutdown () 20.4.47 mysql_stat () 20.4.48 mysql_store_result () 20.4.49 mysql_thread_id () 20.4.50 mysql_use_result () 20.4.51 为什么在mysql_query()返回成功后mysql_store_result()有时返回NULL? 20.4.52 我能从查询得到什么结果? 20.4.53 我怎样才能获得最后插入的行的唯一ID? 20.4.54 链接 C API的问题 20.4.55 怎样制作一个线程安全(thread-safe)的客户 20.5 MySQL Perl API20.5.1 DBI与DBD::mysql 20.5.2 DBI接口 20.5.3 更多的DBI/DBD信息 20.6 MySQL Eiffel 包装 20.7 MySQL Java 连接(JDBC) 20.8 MySQL PHP API 20.9 MySQL C++ API 20.10 MySQL Python API 20.11 MySQL TCL API 21 怎样对比MySQL与其他数据库21.1 怎样对比MySQL和mSQL 21.1.1 怎样将mSQL工具转换到MySQL 21.1.2 mSQL和MySQL的 客户机/服务器通讯协议有何不同 21.1.3 mSQL 2.0 SQL句法与MySQL有何不同 21.2 怎样对比MySQL与PostgreSQL A 一些 MySQL 用户 B 贡献的程序 C MySQL贡献者 D MySQL 变迁的历史记录 E MySQL中已知的错误和设计缺限 F 我们想要在未来加入到MySQL 的计划表( TODO ) G 对移植到其他系统的说明 H MySQL 正则表达式句法的描述 I 什么是 Unireg? J 针对非微软操作系统的 MySQL 服务器许可证 K 针对微软操作系统的 MySQL 许可证 SQL命令,类型和函数索引 概念索引
MySQL 教程MySQL 是流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。在本教程中,会让大家快速掌握 MySQL 的基本知识,并轻松使用 MySQL 数据库。什么是数据库?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:1.数据以表格的形式出现2.每行为各种记录名称3.每列为记录名称所对应的数据域4.许多的行和列组成一张表单5.若干的表单组成databaseRDBMS 术语 在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:数据库: 数据库是一些关联表的集合。数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。外键:外键用于关联两个表。复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。MySQL 为关系型数据库(Relational Database Management System), 这种所谓的关系型可以理解为表格的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称;列(col): 具有相同数据类型的数据的集合;行(row): 每一行用来描述某条记录的具体信息;值(value): 行的具体信息, 每个值必须与该列的数据类型相同;键(key): 键的值在当前列中具有唯一性。MySQL数据库MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 是开源的,目前隶属于 Oracle 旗下产品。MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。MySQL 使用标准的 SQL 数据语言形式。MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。MySQL 对PHP有很好的支持,PHP 是目前流行的 Web 开发语言。MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。Redis 教程REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧