关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » MySQL »MySQL数据库分区的概念与2大好处(1)

    MySQL数据库分区的概念与2大好处(1)

    2010-06-04 10:49:00 出处:ITJS
    分享

    我们大家都知道通过MySQL数据库分区(Partition)可以提升MySQL数据库的性能,那么到底什么是MySQL数据库分区呢?以及其实际应用的好处的表现有哪些呢?以下的文章就是对这些内容的描述。

    什么是数据库分区?

    数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。 分区主要有两种形式://这里一定要注意行和列的概念(row是行,column是列)

    水平分区(Horizontal Partitioning) 这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。

    举个简单例子:一个包含十年发票记录的表可以被MySQL数据库分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份)

    垂直分区(Vertical Partitioning) 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。

    举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。

    在数据库供应商开始在他们的数据库引擎中建立分区(主要是水平分区)时,DBA和建模者必须设计好表的物理分区结构,不要保存冗余的数据(不同表中同时都包含父表中的数据)或相互联结成一个逻辑父对象(通常是视图)。这种做法会使水平分区的大部分功能失效,有时候也会对垂直分区产生影响。

    在MySQL 5.1中进行分区

    MySQL5.1中最激动人心的新特性应该就是对水平MySQL数据库分区的支持了。这对MySQL的使用者来说确实是个好消息,而且她已经支持分区大部分模式:

    Range(范围) – 这种模式允许DBA将数据划分不同范围。例如DBA可以将一个表通过年份划分成三个分区,80年代(1980's)的数据,90年代(1990's)的数据以及任何在2000年(包括2000年)后的数据。

    Hash(哈希) – 这中模式允许DBA通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区,。例如DBA可以建立一个对表主键进行分区的表。

    Key(键值) – 上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

    List(预定义列表) – 这种模式允许系统通过DBA定义的列表的值所对应的行数据进行分割。例如:DBA建立了一个横跨三个分区的表,分别根据2004年2005年和2006年值所对应的数据。

    Composite(复合模式) - 很神秘吧,哈哈,其实是以上模式的组合使用而已,就不解释了。举例:在初始化已经进行了Range范围分区的表上,我们可以对其中一个分区再进行hash哈希分区。

    分区带来的两点好处:

    性能的提升(Increased performance) - 在扫描操作中,如果MySQL的优化器知道哪个分区中才包含特定查询中需要的数据,它就能直接去扫描那些分区的数据,而不用浪费很多时间扫描不需要的地方了。需要举个例子?好啊,百万行的表划分为10个分区,每个分区就包含十万行数据,那么查询分区需要的时间仅仅是全表扫描的十分之一了,很明显的对比。

    同时对十万行的表建立索引的速度也会比百万行的快得多得多。如果你能把这些分区建立在不同的磁盘上,这时候的I/O读写速度就“不堪设想”(没用错词,真的太快了,理论上100倍的速度提升啊,这是多么快的响应速度啊,所以有点不堪设想了)了。

    对数据管理的简化(Simplified data management) - 分区技术可以让DBA对数据的管理能力提升。通过优良的MySQL数据库分区,DBA可以简化特定数据操作的执行方式。例如:DBA在对某些分区的内容进行删除的同时能保证余下的分区的数据完整性(这是跟对表的数据删除这种大动作做比较的)。 此外分区是由MySQL系统直接管理的,DBA不需要手工的去划分和维护。例如:这个例如没意思,不讲了,如果你是DBA,只要你划分了分区,以后你就不用管了就是了。

    站在性能设计的观点上,俺们对以上的内容也是相当感兴趣滴。通过使用分区和对不同的SQL操作的匹配设计,数据库的性能一定能获得巨大提升。下面咱们一起用用这个MySQL 5.1的新功能看看。

    下面所有的测试都在Dell Optiplex box with a Pentium 4 3.00GHz processor, 1GB of RAM机器上(炫耀啊……),Fedora Core 4和MySQL 5.1.6 alpha上运行通过。

    如何进行实际分区 看看分区的实际效果吧。我们建立几个同样的MyISAM引擎的表,包含日期敏感的数据,但只对其中一个分区。分区的表(表名为part_tab)我们采用Range范围分区模式,通过年份进行MySQL数据库分区:

    mysql> CREATE TABLE part_tab   -> ( c1 int default NULL,   -> c2 varchar(30) default NULL,   -> c3 date default NULL ->   -> ) engine=myisam   -> PARTITION BY RANGE (year(c3))   (PARTITION p0 VALUES LESS THAN (1995),   -> PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) ,   -> PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) ,   -> PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) ,   -> PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) ,   -> PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010),   -> PARTITION p11 VALUES LESS THAN MAXVALUE );   Query OK, 0 rows affected (0.00 sec) 

    注意到了这里的最后一行吗?这里把不属于前面年度划分的年份范围都包含了,这样才能保证数据不会出错,大家以后要记住啊,不然数据库无缘无故出错你就爽了。

    那下面我们建立没有MySQL数据库分区的表(表名为no_part_tab):

    mysql> create table no_part_tab   -> (c1 int(11) default NULL,   -> c2 varchar(30) default NULL,   -> c3 date default NULL)   engine=myisam;   Query OK, 0 rows affected (0.02 sec)  

    下面咱写一个存储过程它能向咱刚才建立的已分区的表中平均的向每个分区插入共8百万条不同的数据。填满后,咱就给没分区的克隆表中插入相同的数据:

    mysql> delimiter //   mysql> CREATE PROCEDURE load_part_tab()   -> begin   -> declare v int default 0;   -> while v < 8000000   -> do   -> insert into part_tab   -> values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652));   -> set vv = v + 1;   -> end while;   -> end   -> //   Query OK, 0 rows affected (0.00 sec)   mysql> delimiter ;   mysql> call load_part_tab();   Query OK, 1 row affected (8 min 17.75 sec)   mysql> insert into no_part_tab select * from part_tab;   Query OK, 8000000 rows affected (51.59 sec) Records: 8000000 Duplicates: 0 Warnings: 0   

    表都准备好了。咱开始对这两表中的数据进行简单的范围查询吧。先分区了的,后没MySQL数据库分区的,跟着有执行过程解析(MySQL Explain命令解析器),看到的是MySQL做了什么:

    mysql> select count(*) from no_part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31';   +----------+ | count(*) | +----------+ | 795181 | +----------+ 1 row in set (38.30 sec)   mysql> select count(*) from part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31';  +----------+ | count(*) | +----------+ | 795181 | +----------+ 1 row in set (3.88 sec)   mysql> explain select count(*) from no_part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31'G   id: 1 select_type:   SIMPLE table: no_part_tab   type: ALL   possible_keys: NULL   key: NULL   key_len: NULL   ref: NULL   rows: 8000000   Extra: Using where 1 row in set (0.00 sec)   mysql> explain partitions select count(*) from part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31'G   id: 1   select_type: SIMPLE   table: part_tab   partitions: p1   type: ALL   possible_keys: NULL   key: NULL   key_len: NULL   ref: NULL   rows: 798458   Extra: Using where 1 row in set (0.00 sec)   

    从上面结果可以容易看出,设计恰当表分区能比非分区的减少90%的响应时间。而命令解析Explain程序也告诉我们在对已分区的表的查询过程中仅对第一个分区进行了扫描,其他都跳过了。

    哔厉吧拉,说阿说……反正就是这个分区功能对DBA很有用拉,特别对VLDB和需要快速反应的系统。

    对Vertical Partitioning的一些看法 虽然MySQL 5.1自动实现了水平分区,但在设计数据库的时候不要轻视垂直MySQL数据库分区。虽然要手工去实现垂直分区,但在特定场合下你会收益不少的。例如在前面建立的表中,VARCHAR字段是你平常很少引用的,那么对它进行垂直分区会不会提升速度呢?咱们看看测试结果:

    mysql> desc part_tab; +-------+-------------+------+-----+---------+-------+   | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+   | c1 | int(11) | YES | | NULL | |  | c2 | varchar(30) | YES | | NULL | |  | c3 | date | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.03 sec)   mysql> alter table part_tab drop column c2;   Query OK, 8000000 rows affected (42.20 sec) Records: 8000000 Duplicates: 0 Warnings: 0   mysql> desc part_tab; +-------+---------+------+-----+---------+-------+   | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+   | c1 | int(11) | YES | | NULL | |   | c3 | date | YES | | NULL | | +-------+---------+------+-----+---------+-------+  2 rows in set (0.00 sec)   mysql> select count(*) from part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31'; +----------+   | count(*) | +----------+   | 795181 | +----------+   1 row in set (0.34 sec)   

    在设计上去掉了VARCHAR字段后,不止是你,俺也发现查询响应速度上获得了另一个90%的时间节省。所以大家在设计表的时候,一定要考虑,表中的字段是否真正关联,又是否在你的查询中有用?

    补充说明

    这么简单的文章肯定不能说全MySQL 5.1 分区机制的所有好处和要点(虽然对自己写文章水平很有信心),下面就说几个感兴趣的:

    支持所有存储引擎(MyISAM, Archive, InnoDB, 等等)

    对分区的表支持索引,包括本地索引local indexes,对其进行的是一对一的视图镜像,假设一个表有十个分区,那么其本地索引也包含十个分区。

    关于分区的元数据Metadata的表可以在INFORMATION_SCHEMA数据库中找到,表名为PARTITIONS。

    All SHOW 命令支持返回MySQL数据库分区表以及元数据的索引。

    对其操作的命令和实现的维护功能有(比对全表的操作还多):

    ADD PARTITION   DROP PARTITION   COALESCE PARTITION   REORGANIZE PARTITION   ANALYZE PARTITION   CHECK PARTITION   OPTIMIZE PARTITION   REBUILD PARTITION   REPAIR PARTITION  

    上面说了这么多内容,是关于对MySQL数据库分区的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注ITJS,学习最新Mysql技术。

    我们大家都知道通过MySQL数据库分区(Partition)可以提升MySQL数据库的性能,那么到底什么是MySQL数据库分区呢?以及其实际应用的好处的表现有哪些呢?以下的文章就是对这些内容的描述。

    什么是数据库分区?

    数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。 分区主要有两种形式://这里一定要注意行和列的概念(row是行,column是列)

    水平分区(Horizontal Partitioning) 这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。

    举个简单例子:一个包含十年发票记录的表可以被MySQL数据库分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份)

    垂直分区(Vertical Partitioning) 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。

    举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。

    在数据库供应商开始在他们的数据库引擎中建立分区(主要是水平分区)时,DBA和建模者必须设计好表的物理分区结构,不要保存冗余的数据(不同表中同时都包含父表中的数据)或相互联结成一个逻辑父对象(通常是视图)。这种做法会使水平分区的大部分功能失效,有时候也会对垂直分区产生影响。

    在MySQL 5.1中进行分区

    MySQL5.1中最激动人心的新特性应该就是对水平MySQL数据库分区的支持了。这对MySQL的使用者来说确实是个好消息,而且她已经支持分区大部分模式:

    Range(范围) – 这种模式允许DBA将数据划分不同范围。例如DBA可以将一个表通过年份划分成三个分区,80年代(1980's)的数据,90年代(1990's)的数据以及任何在2000年(包括2000年)后的数据。

    Hash(哈希) – 这中模式允许DBA通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区,。例如DBA可以建立一个对表主键进行分区的表。

    Key(键值) – 上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

    List(预定义列表) – 这种模式允许系统通过DBA定义的列表的值所对应的行数据进行分割。例如:DBA建立了一个横跨三个分区的表,分别根据2004年2005年和2006年值所对应的数据。

    Composite(复合模式) - 很神秘吧,哈哈,其实是以上模式的组合使用而已,就不解释了。举例:在初始化已经进行了Range范围分区的表上,我们可以对其中一个分区再进行hash哈希分区。

    分区带来的两点好处:

    性能的提升(Increased performance) - 在扫描操作中,如果MySQL的优化器知道哪个分区中才包含特定查询中需要的数据,它就能直接去扫描那些分区的数据,而不用浪费很多时间扫描不需要的地方了。需要举个例子?好啊,百万行的表划分为10个分区,每个分区就包含十万行数据,那么查询分区需要的时间仅仅是全表扫描的十分之一了,很明显的对比。

    同时对十万行的表建立索引的速度也会比百万行的快得多得多。如果你能把这些分区建立在不同的磁盘上,这时候的I/O读写速度就“不堪设想”(没用错词,真的太快了,理论上100倍的速度提升啊,这是多么快的响应速度啊,所以有点不堪设想了)了。

    对数据管理的简化(Simplified data management) - 分区技术可以让DBA对数据的管理能力提升。通过优良的MySQL数据库分区,DBA可以简化特定数据操作的执行方式。例如:DBA在对某些分区的内容进行删除的同时能保证余下的分区的数据完整性(这是跟对表的数据删除这种大动作做比较的)。 此外分区是由MySQL系统直接管理的,DBA不需要手工的去划分和维护。例如:这个例如没意思,不讲了,如果你是DBA,只要你划分了分区,以后你就不用管了就是了。

    站在性能设计的观点上,俺们对以上的内容也是相当感兴趣滴。通过使用分区和对不同的SQL操作的匹配设计,数据库的性能一定能获得巨大提升。下面咱们一起用用这个MySQL 5.1的新功能看看。

    下面所有的测试都在Dell Optiplex box with a Pentium 4 3.00GHz processor, 1GB of RAM机器上(炫耀啊……),Fedora Core 4和MySQL 5.1.6 alpha上运行通过。

    如何进行实际分区 看看分区的实际效果吧。我们建立几个同样的MyISAM引擎的表,包含日期敏感的数据,但只对其中一个分区。分区的表(表名为part_tab)我们采用Range范围分区模式,通过年份进行MySQL数据库分区:

    mysql> CREATE TABLE part_tab   -> ( c1 int default NULL,   -> c2 varchar(30) default NULL,   -> c3 date default NULL ->   -> ) engine=myisam   -> PARTITION BY RANGE (year(c3))   (PARTITION p0 VALUES LESS THAN (1995),   -> PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) ,   -> PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) ,   -> PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) ,   -> PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) ,   -> PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010),   -> PARTITION p11 VALUES LESS THAN MAXVALUE );   Query OK, 0 rows affected (0.00 sec) 

    注意到了这里的最后一行吗?这里把不属于前面年度划分的年份范围都包含了,这样才能保证数据不会出错,大家以后要记住啊,不然数据库无缘无故出错你就爽了。

    那下面我们建立没有MySQL数据库分区的表(表名为no_part_tab):

    mysql> create table no_part_tab   -> (c1 int(11) default NULL,   -> c2 varchar(30) default NULL,   -> c3 date default NULL)   engine=myisam;   Query OK, 0 rows affected (0.02 sec)  

    下面咱写一个存储过程它能向咱刚才建立的已分区的表中平均的向每个分区插入共8百万条不同的数据。填满后,咱就给没分区的克隆表中插入相同的数据:

    mysql> delimiter //   mysql> CREATE PROCEDURE load_part_tab()   -> begin   -> declare v int default 0;   -> while v < 8000000   -> do   -> insert into part_tab   -> values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652));   -> set vv = v + 1;   -> end while;   -> end   -> //   Query OK, 0 rows affected (0.00 sec)   mysql> delimiter ;   mysql> call load_part_tab();   Query OK, 1 row affected (8 min 17.75 sec)   mysql> insert into no_part_tab select * from part_tab;   Query OK, 8000000 rows affected (51.59 sec) Records: 8000000 Duplicates: 0 Warnings: 0   

    表都准备好了。咱开始对这两表中的数据进行简单的范围查询吧。先分区了的,后没MySQL数据库分区的,跟着有执行过程解析(MySQL Explain命令解析器),看到的是MySQL做了什么:

    mysql> select count(*) from no_part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31';   +----------+ | count(*) | +----------+ | 795181 | +----------+ 1 row in set (38.30 sec)   mysql> select count(*) from part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31';  +----------+ | count(*) | +----------+ | 795181 | +----------+ 1 row in set (3.88 sec)   mysql> explain select count(*) from no_part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31'G   id: 1 select_type:   SIMPLE table: no_part_tab   type: ALL   possible_keys: NULL   key: NULL   key_len: NULL   ref: NULL   rows: 8000000   Extra: Using where 1 row in set (0.00 sec)   mysql> explain partitions select count(*) from part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31'G   id: 1   select_type: SIMPLE   table: part_tab   partitions: p1   type: ALL   possible_keys: NULL   key: NULL   key_len: NULL   ref: NULL   rows: 798458   Extra: Using where 1 row in set (0.00 sec)   

    从上面结果可以容易看出,设计恰当表分区能比非分区的减少90%的响应时间。而命令解析Explain程序也告诉我们在对已分区的表的查询过程中仅对第一个分区进行了扫描,其他都跳过了。

    哔厉吧拉,说阿说……反正就是这个分区功能对DBA很有用拉,特别对VLDB和需要快速反应的系统。

    对Vertical Partitioning的一些看法 虽然MySQL 5.1自动实现了水平分区,但在设计数据库的时候不要轻视垂直MySQL数据库分区。虽然要手工去实现垂直分区,但在特定场合下你会收益不少的。例如在前面建立的表中,VARCHAR字段是你平常很少引用的,那么对它进行垂直分区会不会提升速度呢?咱们看看测试结果:

    mysql> desc part_tab; +-------+-------------+------+-----+---------+-------+   | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+   | c1 | int(11) | YES | | NULL | |  | c2 | varchar(30) | YES | | NULL | |  | c3 | date | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.03 sec)   mysql> alter table part_tab drop column c2;   Query OK, 8000000 rows affected (42.20 sec) Records: 8000000 Duplicates: 0 Warnings: 0   mysql> desc part_tab; +-------+---------+------+-----+---------+-------+   | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+   | c1 | int(11) | YES | | NULL | |   | c3 | date | YES | | NULL | | +-------+---------+------+-----+---------+-------+  2 rows in set (0.00 sec)   mysql> select count(*) from part_tab where   -> c3 > date '1995-01-01' and c3 < date '1995-12-31'; +----------+   | count(*) | +----------+   | 795181 | +----------+   1 row in set (0.34 sec)   

    在设计上去掉了VARCHAR字段后,不止是你,俺也发现查询响应速度上获得了另一个90%的时间节省。所以大家在设计表的时候,一定要考虑,表中的字段是否真正关联,又是否在你的查询中有用?

    补充说明

    这么简单的文章肯定不能说全MySQL 5.1 分区机制的所有好处和要点(虽然对自己写文章水平很有信心),下面就说几个感兴趣的:

    支持所有存储引擎(MyISAM, Archive, InnoDB, 等等)

    对分区的表支持索引,包括本地索引local indexes,对其进行的是一对一的视图镜像,假设一个表有十个分区,那么其本地索引也包含十个分区。

    关于分区的元数据Metadata的表可以在INFORMATION_SCHEMA数据库中找到,表名为PARTITIONS。

    All SHOW 命令支持返回MySQL数据库分区表以及元数据的索引。

    对其操作的命令和实现的维护功能有(比对全表的操作还多):

    ADD PARTITION   DROP PARTITION   COALESCE PARTITION   REORGANIZE PARTITION   ANALYZE PARTITION   CHECK PARTITION   OPTIMIZE PARTITION   REBUILD PARTITION   REPAIR PARTITION  

    上面说了这么多内容,是关于对MySQL数据库分区的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注ITJS,学习最新Mysql技术。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    Cornell大神Kleinberg的经典教材《算法设计》是最好入门的算法教材

    从 Microsoft 下载中心安装 Windows 7 SP1 和 Windows Server 2008 R2 SP1 之前要执行的步骤

    Llama 2基于UCloud UK8S的创新应用

    火山引擎DataTester:如何使用A/B测试优化全域营销效果

    腾讯云、移动云继阿里云降价后宣布大幅度降价

    字节跳动数据平台论文被ICDE2023国际顶会收录,将通过火山引擎开放相关成果

    这个话题被围观超10000次,火山引擎VeDI如此解答

    误删库怎么办?火山引擎DataLeap“3招”守护数据安全

    IT头条

    平替CUDA!摩尔线程发布MUSA 4性能分析工具

    00:43

    三起案件揭开侵犯个人信息犯罪的黑灰产业链

    13:59

    百度三年开放2.1万实习岗,全力培育AI领域未来领袖

    00:36

    工信部:一季度,电信业务总量同比增长7.7%,业务收入累计完成4469亿元

    23:42

    Gartner:2024年全球半导体营收6559亿美元,AI助力英伟达首登榜首

    18:04

    技术热点

    iOS 8 中如何集成 Touch ID 功能

    windows7系统中鼠标滑轮键(中键)的快捷应用

    MySQL数据库的23个特别注意的安全事项

    Kruskal 最小生成树算法

    Ubuntu 14.10上安装新的字体图文教程

    Ubuntu14更新后无法进入系统卡在光标界面解怎么办?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。