Polardb产品体验-智能家居篇 [魔咒]--阿里云 MVP分享

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Polardb 是阿里云研发的一种关系型数据库,与mysql完全兼容,而性能又是其6倍,具有高吞吐,低延迟等特性; 本测试通过模拟控制智能家居开关的终端场景,来体验polardb的性能;
本文由阿里云 MVP 洵云提供。

Polardb 是阿里云研发的一种关系型数据库,与mysql完全兼容,而性能又是其6倍,具有高吞吐,低延迟等特性;
本测试通过模拟控制智能家居开关的终端场景,来体验polardb的性能;
1、环境搭建
1.1 polardb配置
首先需要购买polardb,按照处理器和内存的性能不同,价格也不同,最低的配置为2核4G的polar.mysql.x2.medium规格,包月价格560RMB;
购买以后,就可以通过连接https://polardb.console.aliyun.com/,进入polardb控制台进行相关的配置;选择一个地域节点[如华东1],创建一个实例,然后选择一个集群列表,创建一个集群。创建好后,可以看到数据库类型为POLARDB (MySQL 5.6),付费类型和到期时间分别为包月和一个月的长度;在创建时配置好初始账号和密码就可以使用了;在集群页面,鼠标点击右侧的管理连接,进入集群信息页面,可以看到公网联接的地址,是用户账号名开始的连接,后面是mysql常用的端口号3306,记录下这个后面连接用的到;
集群连接地址 (公网) : mypolardb.mysql.polardb.rds.aliyuncs.com:3306 ,这里我的账号配置为mypolardb,所以这里以mypolardb开头;
在上面的白名单列表 中,点击后面的笔状修改按钮,将我们用来连接数据库的ecs 服务器地址添加到里面;这里我的服务器地址为47.94.219.162.
1.2 ECS服务器配置:

由于需要在web页面上进行结果测试,先安装nginx服务器,使用以下命令行进行安装:
sudo apt-get install nginx 
安装好后,在浏览器中输入 ECS的地址[这里测试的是:47.94.219.162],可以看到nginx的欢迎界面,表示安装成功;
由于后面需要用php脚本程序开发,所以还需要安装php,在console窗口输入以下命令安装:
sudo apt-get install php*
安装好后,输入下面的命令修改nginx的配置:
sudo vi /etc/nginx/sites-available/default
将文件中的下面四段打开:
location ~ \.php$ {
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
保存退出,然后重启nginx:
service nginx restart
进入/var/www/html目录,创建一个php文件,测试是否php安装成功:
vi phpinfo.php
<?php phpinfo(); >
在浏览器访问这个文件,如果可以看到相关的php信息,则表明php安装成功;

进入域名控制台,选择要解析的域名,点击解析连接,添加一条A记录,主机记录起一个容易记住的名字,比如:polardb,记录值选择ECS的ip地址,比如:47.94.219.162,然后创建完成后,等待5分钟,在浏览器访问一下新的域名,比如polardb.xunyun17.xyz,如果同样能看到nginx 的欢迎界面,表示域名解析成功;

由于本智能家居场景使用mysql开发体验,所以还需要在ubuntu里,安装mysql,运行下面的命令进行安装:
sudo apt install mysql-client

安装完mysql后,建立一个shell脚本,测试是否可以连接到polardb上:
vi p.sh
mysql -h mypolardb.mysql.polardb.rds.aliyuncs.com --user=mypolardb --password=mypolardb
./p.sh
如果运行完脚本后,可以看到mysql的提示信息,和mysql大于号提示符,表示可以连接成功;

2、开发
首先搭建创建一个数据库和一张表用来保存客厅和设备当前信息:
./p.sh
create database keting;
use keting;
CREATE TABLE status (devname VARCHAR(20), value int(4),changetime DATETIME);
insert into status(devname,value,changetime) values 
('TV0001',0,NOW()), 
('LAMP01',1,NOW()),
('CURN01',1,NOW()); 

然后通过mysql的c语言api接口,编写一段程序,来读取status设备表中的设备状态:
////////////////////////////////////////query lamp device
     sprintf(str_cmd,"select value from status where devname='LAMP01'");
//printf("\n%s\n.",str_cmd);
     no_res = 0;
 
  if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
    res = mysql_use_result(conn);
 if(no_res==0){
     while((row = mysql_fetch_row(res)) != NULL)
     {
//        printf("%s \n", row[0]);
   if(selno==17) printf("%s", row[0]);
 else         printf("%s\t %s\t %s", row[0],row[1],row[2]);
     }
  } 
    mysql_free_result(res);

     sprintf(str_cmd,"select value from status where devname='CURN01'");
//printf("\n%s\n.",str_cmd);
     no_res = 0;

下一步,就是用php脚本调用这段代码查询设备状态,并且显示在网页上:查询结果在
使用以下php代码实现:
if(!empty($_REQUEST['arguments'])){
    exec('./mysqlv '.$_REQUEST['arguments'].' LAMP03 1',$result);
//print_r($result);
//echo $result[0][0].'<br>';
//echo $result[0][1].'<br>';
//echo $result[0][2];

if($result[0][0]==0) $s1 = 'OFF';
else $s1 = 'ON';
if($result[0][1]==0) $s2 = 'OFF';
else $s2 = 'ON';
if($result[0][2]==0) $s3 = 'OFF';
else $s3 = 'ON';
    if($_REQUEST['arguments']==17) echo "<center><table border=\"1\">
  <tr>
    <th>电视</th>
    <th>灯</th>
    <th>窗帘</th>
  </tr>
  <tr>
    <td>".$s1."</td>
    <td>".$s2."</td>
    <td>".$s3."</td>
  </tr>
</table></center>";
打开浏览器运行这个php脚本,点击运行按钮,可以看到页面会显示一个设备状态表格,包括电视,灯,窗帘是否有打开或关闭;

接下来,用c语言写一个socket监听程序,用来监听后续远程设备对智能家居的更新请求,并实现状态更新,代码如下:
   n = read(sock,buffer,255);
 if (n < 0) {
      perror("ERROR reading from socket");
      exit(1);
   }
strncpy(devname,buffer,6);
devname[6]=0;
devval=buffer[6]-'0';
memset(cmdstr,0,256);
sprintf(cmdstr,"./mysqlv 15 %s %i",devname,devval);
printf("%s.\n",cmdstr);
   system(cmdstr);
     
   printf("Here is the message: %s\n",buffer);
   n = write(sock,"I got your message",18);
 
服务端监听程序编写好以后,就可以开始写模拟设备端的程序:
同样使用c语言的socket函数进行编写,将命令行的数据发往服务器端:

   /* Now connect to the server */
   if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
      perror("ERROR connecting");
      exit(1);
   }
   
   /* Now ask for a message from the user, this message
      * will be read by server
   */
   printf("Please enter the message: ");
   bzero(buffer,256);
   strcpy(buffer, argv[3]);
   //fgets(buffer,255,stdin);
   
   /* Send message to the server */
   n = write(sockfd, buffer, strlen(buffer));
   
   if (n < 0) {
      perror("ERROR writing to socket");
      exit(1);
   }
   
最后,还要修改我们的mysqlv.c的数据库调用代码,将命令行参数更改到数据库中:

 sprintf(str_cmd,"update status set value=%d  where devname=\'%s\'",atoi(argc[3]),argc[2]);
 
3、测试
当服务器和客户端的程序都完成后,就可以进行测试了;首先在服务器上,用以下命令行后台运行监听程序:
./s&
然后在本地运行模拟设备程序,例如我们要运行将灯打开的命令,用下面的命令行:
./c 47.94.219.162 8266 LAMP011
如果收到服务器的回显消息,则表示发送成功;
打开浏览器,运行php脚本,点击运行按钮,可以看到页面出现了最新设备状态的表格信息;

结论与建议:可以看到这个polardb的新型数据库,还是和mysql兼容的,操作起来也比较方便;
如果能够像其他阿里云的产品也提供相关的restful api接口,将会使开发变得更方便和快捷;

4、附录和截图

操作polardb 的mysqlv完整程序:
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argv,char**argc)
{
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
 
    char server[] = "47.98.24.120";
    char user[] = "mypolardb";
    char password[] = "mypolardb";
    char database[] = "mysql";
char str_cmd[250]; 
int no_res = 0;
int selno=0;

 if(argv<2) {
printf("mysqlv funcno.\n");
return 0;
}

    conn = mysql_init(NULL);
 
    if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
    {
        printf(">>>>>>>\n");
        exit(1);
    }
selno = atoi(argc[1]);
    //    printf("selno:%d\n<br>",selno);
switch(selno){
   case 1:
     strcpy(str_cmd,"select version()");
     break;
   case 2:
     strcpy(str_cmd,"select current_date");
     break;
   case 3:
     strcpy(str_cmd,"show databases");
     break;
   case 4:
     strcpy(str_cmd,"create database keting");
     no_res = 1;
     break;
   case 5:
     strcpy(str_cmd,"drop database keting");
     no_res = 1;
     break;
   case 6:
     strcpy(str_cmd,"create database woshi");
     no_res = 1;
     break;
   case 7:
     strcpy(str_cmd,"drop database woshi");
     no_res = 1;
     break;
   case 8:
     strcpy(str_cmd,"create database chufang");
     no_res = 1;
     break;
   case 9:
     strcpy(str_cmd,"drop database chufang");
     no_res = 1;
     break;
   case 10:
     strcpy(str_cmd,"use keting");
     no_res = 1;
     break;
   case 11:
     strcpy(str_cmd,"use woshi");
     no_res = 1;
     break;
   case 12:
     strcpy(str_cmd,"use chufang");
     no_res = 1;
     break;
#if 0
   case 13:
     strcpy(str_cmd,"show tables");
     //no_res = 1;
     break;
/*table operate for keting*/
   case 14:
     strcpy(str_cmd,"CREATE TABLE prop (devname VARCHAR(20), value int(4))");
     //no_res = 1;
     break;n
#endif
   case 15:
     strcpy(str_cmd,"describe prop");
     //no_res = 1;
     break;
   case 16:
     strcpy(str_cmd,"drop table if exists prop");
     //no_res = 1;
     break;
}
if(selno==13){
     strcpy(str_cmd,"use keting");
    if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
     strcpy(str_cmd,"show tables");
     no_res = 0;
 }
if(selno==14){
     strcpy(str_cmd,"use keting");
    if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
     strcpy(str_cmd,"select * from prop;");
     no_res = 0;
 }

if(selno==15){
     strcpy(str_cmd,"use keting");
    if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
//     sprintf(str_cmd,"insert into prop(devname,value,changetime) values (\'%s\',%i,NOW())",argc[2],atoi(argc[3]));
     sprintf(str_cmd,"update status set value=%d  where devname=\'%s\'",atoi(argc[3]),argc[2]);

printf("\n%s\n.",str_cmd);
     no_res = 1;
 }

if(selno==16){
     strcpy(str_cmd,"use keting");
    if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
     sprintf(str_cmd,"delete from prop where devname='my_dev'");
printf("\n%s\n.",str_cmd);
     no_res = 1;
 }

if(selno==17){
     strcpy(str_cmd,"use keting");
     if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
     }
////////////////////////////////////////query tv device
     sprintf(str_cmd,"select value from status where devname='TV0001'");
//printf("\n%s\n.",str_cmd);
     no_res = 0;
 
  if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
    res = mysql_use_result(conn);
 if(no_res==0){
     while((row = mysql_fetch_row(res)) != NULL)
     {
//        printf("%s \n", row[0]);
   if(selno==17) printf("%s", row[0]);
 else         printf("%s\t %s\t %s", row[0],row[1],row[2]);
     }
  } 
    mysql_free_result(res);
////////////////////////////////////////query lamp device
     sprintf(str_cmd,"select value from status where devname='LAMP01'");
//printf("\n%s\n.",str_cmd);
     no_res = 0;
 
  if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
    res = mysql_use_result(conn);
 if(no_res==0){
     while((row = mysql_fetch_row(res)) != NULL)
     {
//        printf("%s \n", row[0]);
   if(selno==17) printf("%s", row[0]);
 else         printf("%s\t %s\t %s", row[0],row[1],row[2]);
     }
  } 
    mysql_free_result(res);

     sprintf(str_cmd,"select value from status where devname='CURN01'");
//printf("\n%s\n.",str_cmd);
     no_res = 0;
  


}
//printf("finish! \n");


    if(mysql_query(conn, str_cmd))
     {
        printf("<<<<<<<\n");
        exit(1);
   }
    res = mysql_use_result(conn);
 if(no_res==0){
   if(selno==14)
     printf("DEVICE VALUE TIMESTAMP<br>");
     while((row = mysql_fetch_row(res)) != NULL)
     {
//        printf("%s", row[0]);
if(selno==17) printf("%s\t ", row[0]);
 else       printf("%s\t %s\t %s", row[0],row[1],row[2]);
     }
  } 
    mysql_free_result(res);
    mysql_close(conn);
/* 
    printf("finish! \n");
    printf("finish! <br>");
 */
    return 0;
}


server.c服务器监听的完整程序:
#include <stdio.h>
#include <stdlib.h>

#include <netdb.h>
#include <netinet/in.h>

#include <string.h>

void doprocessing (int sock);

int main( int argc, char *argv[] ) {
   int sockfd, newsockfd, portno, clilen;
   char buffer[256];
   struct sockaddr_in serv_addr, cli_addr;
   int n, pid;
   
   /* First call to socket() function */
   sockfd = socket(AF_INET, SOCK_STREAM, 0);
   
   if (sockfd < 0) {
      perror("ERROR opening socket");
      exit(1);
   }
   
   /* Initialize socket structure */
   bzero((char *) &serv_addr, sizeof(serv_addr));
   portno = 8266;//5001;
   
   serv_addr.sin_family = AF_INET;
   serv_addr.sin_addr.s_addr = INADDR_ANY;
   serv_addr.sin_port = htons(portno);
   
   /* Now bind the host address using bind() call.*/
   if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
      perror("ERROR on binding");
      exit(1);
   }
   
   /* Now start listening for the clients, here
      * process will go in sleep mode and will wait
      * for the incoming connection
   */
   
   listen(sockfd,5);
   clilen = sizeof(cli_addr);
   
   while (1) {
      newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
      if (newsockfd < 0) {
         perror("ERROR on accept");
         exit(1);
      }
      
      /* Create child process */
      pid = fork();
      if (pid < 0) {
         perror("ERROR on fork");
         exit(1);
      }
      
      if (pid == 0) {
         /* This is the client process */
         close(sockfd);
         doprocessing(newsockfd);
         exit(0);
      }
      else {
         close(newsockfd);
      }
   } /* end of while */
}
void doprocessing (int sock) {
   int n;
   char buffer[256];
   char cmdstr[256];
   char devname[10];
   int devval=0;
   bzero(buffer,256);
   n = read(sock,buffer,255);
 if (n < 0) {
      perror("ERROR reading from socket");
      exit(1);
   }
strncpy(devname,buffer,6);
devname[6]=0;
devval=buffer[6]-'0';
memset(cmdstr,0,256);
sprintf(cmdstr,"./mysqlv 15 %s %i",devname,devval);
printf("%s.\n",cmdstr);
   system(cmdstr);
     
   printf("Here is the message: %s\n",buffer);
   n = write(sock,"I got your message",18);
   
   if (n < 0) {
      perror("ERROR writing to socket");
      exit(1);
   }
if(buffer[0]=='z') exit(1);
}

client.c客户端模拟设备的完整程序:
#include <stdio.h>
#include <stdlib.h>

#include <netdb.h>
#include <netinet/in.h>

#include <string.h>

int main(int argc, char *argv[]) {
   int sockfd, portno, n;
   struct sockaddr_in serv_addr;
   struct hostent *server;
   
   char buffer[256];
   
   if (argc < 3) {
      fprintf(stderr,"usage %s hostname port devsw\n", argv[0]);
      exit(0);
   }
   portno = atoi(argv[2]);
   
   /* Create a socket point */
   sockfd = socket(AF_INET, SOCK_STREAM, 0);
   
   if (sockfd < 0) {
      perror("ERROR opening socket");
      exit(1);
   }
   server = gethostbyname(argv[1]);
   
   if (server == NULL) {
      fprintf(stderr,"ERROR, no such host\n");
      exit(0);
   }
   
   bzero((char *) &serv_addr, sizeof(serv_addr));
   serv_addr.sin_family = AF_INET;
   bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
   serv_addr.sin_port = htons(portno);
   
   /* Now connect to the server */
   if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
      perror("ERROR connecting");
      exit(1);
   }
   
   /* Now ask for a message from the user, this message
      * will be read by server
   */
   printf("Please enter the message: ");
   bzero(buffer,256);
   strcpy(buffer, argv[3]);
   //fgets(buffer,255,stdin);
   
   /* Send message to the server */
   n = write(sockfd, buffer, strlen(buffer));
   
   if (n < 0) {
      perror("ERROR writing to socket");
      exit(1);
   }
   
   /* Now read server response */
   bzero(buffer,256);
   n = read(sockfd, buffer, 255);
   
   if (n < 0) {
      perror("ERROR reading from socket");
      exit(1);
   }
   printf("%s\n",buffer);
   return 0;
}

p.php脚本结果显示的完整程序;

<html>
<head>
    <title>小白的智能家居</title>
</head>
<body>
    <?php
        if(!empty($results)){
        //    echo $results;
        }
    ?>
    <center>小白的智能家居</center>


    <form method="post" action="">
<select name="arguments">
  <option value ="17" selected="selected">显示客厅状态</option>
</select>
<input type="submit" name="Submit" value="运行" />
</form>

</body>
</html>
<?php
if(!empty($_REQUEST['arguments'])){
    exec('./mysqlv '.$_REQUEST['arguments'].' LAMP03 1',$result);
//print_r($result);
//echo $result[0][0].'<br>';
//echo $result[0][1].'<br>';
//echo $result[0][2];

if($result[0][0]==0) $s1 = 'OFF';
else $s1 = 'ON';
if($result[0][1]==0) $s2 = 'OFF';
else $s2 = 'ON';
if($result[0][2]==0) $s3 = 'OFF';
else $s3 = 'ON';
    if($_REQUEST['arguments']==17) echo "<center><table border=\"1\">
  <tr>
    <th>电视</th>
    <th>灯</th>
    <th>窗帘</th>
  </tr>
  <tr>
    <td>".$s1."</td>
    <td>".$s2."</td>
    <td>".$s3."</td>
  </tr>
</table></center>";
}

?>

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
19天前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
26天前
|
存储 NoSQL 数据库
阿里云数据库Cassandra的产品价格
阿里云数据库Cassandra提供多地域服务,如中国、亚太、欧洲、美洲及中东。计费分为实例主机节点规格费和存储费用,实例价格因节点数和副本数而异,存储费用按挂载云盘计算。生产系统建议配置多节点以确保冗余。公网流量目前免费,具体收费时间未定。详细价格以购买页面为准。
418 3
|
19天前
|
SQL 存储 API
阿里云实时计算Flink的产品化思考与实践【下】
本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。
110166 8
阿里云实时计算Flink的产品化思考与实践【下】
|
1天前
|
安全 云计算
电子好书发您分享《阿里云产品手册2024版.阿里云产品手册2024版》
**《阿里云产品手册2024版》电子书分享:** 探索阿里云最新技术与服务,涵盖云计算、安全、移动研发等领域,详尽指南助您高效上云。[阅读链接](https://developer.aliyun.com/ebook/8326/116556?spm=a2c6h.26392459.ebook-detail.4.176b272aLerqlg)
10 1
|
5天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
7天前
|
消息中间件 人工智能 监控
|
15天前
|
消息中间件 Cloud Native Serverless
飞天发布时刻丨阿里云 ApsaraMQ 全面升级,携手 Confluent 发布全新产品
阿里云在3月29日的飞天发布时刻宣布ApsaraMQ全面升级,实现全系产品Serverless化,与Confluent合作推出新产品,强化云原生消息队列服务。
|
22天前
|
存储 弹性计算 Serverless
什么是阿里云FPGA云服务器?FPGA云服务器产品优势及应用场景介绍
FPGA云服务器是阿里云提供的实例规格,融合现场可编程门阵列的低延迟硬件加速与弹性资源。FaaS平台简化了FPGA开发,提供统一硬件、开发环境和丰富的IP生态。特性包括硬件虚拟化、联合仿真和动态互联配置。产品计费与ECS一致,支持多种计费模式。优势在于分钟级交付、高性能加速、经济性价比和设计复用。应用广泛,如视频转码、人工智能、基因测序等。FPGA云服务器通过FPGA镜像、OSS服务等工具进行管理。
什么是阿里云FPGA云服务器?FPGA云服务器产品优势及应用场景介绍
|
26天前
|
关系型数据库 分布式数据库 数据库
PolarDB常见问题之数据库不能自己减少节点如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
26天前
|
缓存 关系型数据库 分布式数据库
PolarDB常见问题之数据库cpu突然飙高如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。