Текст на русском языке:
8. Доменное имя для подключения к серверу
Поддерживается подключение к базе данных через доменное имя. В Cetus есть соответствующая опция запуска disable-dns-cache, которая позволяет выбрать, следует ли включать функцию разрешения соединения с доменными именами. После включения можно установить доменное имя и использовать его для доступа к серверной части.
9. Вставка массовых данных
Можно указать несколько значений в операторе INSERT, разделяя их запятыми, например: INSERT INTO table (field1, field2, field3) VALUES ('a', "b", "c"), ('a', 'b', 'c'), ('a', 'b', 'c');
1. Использование пула соединений
Все серверные узлы MySQL должны иметь одинаковые имена пользователей и пароли. Они указываются в файле conf/users.json. Если не указать пользователя в настройках, то он не сможет подключиться к Cetus. Для каждого отдельного экземпляра сервера нельзя указывать отдельные учётные данные. Имя пользователя и пароль при подключении к Cetus могут отличаться от тех, что используются на сервере. Их можно посмотреть в conf/users.json.
2. Поддержка команды set
Мы поддерживаем следующие команды уровня сеанса set: Set names/autocommit. Команды уровня global не поддерживаются. Другие команды set, которые не перечислены, не входят в область поддержки, и их не рекомендуется использовать. Если это действительно необходимо, рекомендуется связаться с администратором базы данных, чтобы настроить поведение по умолчанию.
Поддерживается глобальная настройка свойства CLIENT_FOUND_ROWS. Можно выбрать только включение или отключение этой функции для всего Cetus. Нельзя отдельно настраивать это свойство для каждого соединения. Его можно включить с помощью опции запуска. По умолчанию эта функция отключена. Функция CLIENT_LOCAL_FILES не поддерживается. Рекомендуется протестировать другие функции, требующие дополнительной настройки, прежде чем подтверждать их использование.
3. Изменение переменных среды
Хотя мы поддерживаем изменение переменных окружения клиентом, мы не рекомендуем делать это в программе. Как только переменная будет изменена, нам нужно сбросить состояние соединения перед выполнением SQL, что приведёт к дополнительным запросам к серверу и увеличению задержки ответа клиента.
4. Обработка кода
Функции, которые можно реализовать с помощью программы, лучше не использовать в SQL. Лучше сначала вычислить результат в программе, а затем передать значение в SQL, например, функции времени curdate() и строковые функции trim(). Поскольку функции не могут быть маршрутизированы для разделения баз данных, запрос, который должен был быть отправлен одному серверу, становится распределённой транзакцией, что снижает производительность.
При разбиении на страницы лучше самостоятельно отслеживать смещение страниц, поскольку Cetus перезаписывает смещение при выполнении. SQL устанавливает смещение равным нулю, а после получения всех данных выбирает нужную страницу. Таким образом, объём данных значительно увеличивается, и индекс базы данных не может быть эффективно использован, что приводит к снижению производительности и ошибкам, если данные превышают порог памяти.
5. Не поддерживается Kill query
Не поддерживается остановка выполнения SQL-запроса во время выполнения. Вместо этого можно подключиться к менеджеру Cetus и выполнить команду show connectionlist, чтобы просмотреть выполняемые запросы. Затем можно найти информацию о текущем соединении и остановить выполнение запроса с помощью команды базы данных.
6. Не поддерживается TLS
Протокол TLS не поддерживается, что не позволяет в определённой степени обеспечить безопасность связи между главным и подчинённым устройствами.
7. Не поддерживается мультитенантность
В настоящее время версия с разделением не поддерживает мультитенантные системы.
8. Не поддерживается динамическое расширение
Версия с разделением баз данных в настоящее время не поддерживает динамическое расширение. Требуется ручное перемещение данных, и в большинстве случаев требуется «остановить» систему для расширения.
9. Ограничения разделов
В настоящее время поддерживается только один уровень разделов, и максимум 64 раздела (слишком большое количество обновлений глобальных таблиц может привести к резкому ухудшению производительности распределённых транзакций). Рекомендуется использовать 4, 8 или 16 разделов. Двухуровневые разделы не поддерживаются; для автоинкрементных первичных ключей разделов лучше использовать сторонние инструменты, такие как Redis.
10. Правила написания SQL
Поскольку SQL требует полного анализатора, рекомендуется следовать стандартным правилам при написании SQL, связанного с разделением. Перед развёртыванием протестируйте его в тестовой среде. Следуйте следующим рекомендациям:
11. Поддерживаемые функции SQL
Cetus поддерживает большинство функций SQL. Однако есть некоторые ограничения:
Неподдерживаемые функции:
Не поддерживаются COUNT(DISTINCT)/SUM(DISTINCT)/AVG(DISTINCT). Для глобальных таблиц ограничений нет. Для таблиц с разделением рекомендуется выполнять операции отдельно, сначала используя distinct для получения значений со всех узлов, а затем объединяя данные для подсчёта уникальных значений, суммирования или вычисления среднего значения.
Не поддерживается LAST_INSERT_ID. В настоящее время эта функция не используется в производственной среде. Если требуется получить глобально уникальное значение, рекомендуется использовать Redis. Cetus также предоставляет метод select cetus_sequence(), который возвращает случайное 64-битное число.
Не поддерживаются хранимые процедуры и представления.
Не поддерживается выполнение пакетных SQL-операторов.
Не поддерживается команда change user клиента.
Не поддерживаются несколько условий having.
Не поддерживаются подзапросы, содержащие any/all/some. Не поддерживаются подзапросы с any/all/some, например: select dept_no, emp_no from dept_emp where emp_no > any (select emp_no from dept_emp where dept_no='d001'). Если необходимо, можно преобразовать в связанный запрос.
Не поддерживается load data infile.
Не поддерживается синтаксис handler.
Не поддерживается синтаксис lock tables.
При использовании нескольких агрегатных функций не поддерживается having и агрегатные функции между собой.
Ограничения поддерживаемых функций:
Ограничение ORDER BY. Для глобальных таблиц ограничений нет; для таблиц с разделением можно использовать не более 8 столбцов в ORDER BY, и необходимо использовать имена столбцов или псевдонимы. В настоящее время сортировка по полям типа enum не поддерживается.
Ограничение DISTINCT. Для глобальных таблиц ограничений нет; для таблиц с разделением поддерживается только DISTINCT для полей, которые также являются полями ORDER BY. Например, select distinct col1 from tab1 order by col1. Чтобы сделать использование более удобным, Cetus автоматически дополняет ORDER BY для неуказанных полей. Например, для select distinct col1,col2 fromtab1 Cetus преобразует его в select distinct col1,col2 from tab1 order by col1, col2. Но если написать select distinct * from tab1, Cetus вернёт ошибку. Рекомендуется использовать стандартные методы для повышения эффективности.
Ограничение CASE WHEN/IF. Для глобальных таблиц ограничений нет; для таблиц с разделением нельзя использовать в DML-операторах и после GROUP BY, но можно использовать после SELECT или в качестве условия фильтрации.
Ограничение на разбиение на страницы. Из-за поддержки разделения результаты могут быть неточными при большом количестве страниц.
JOIN без поддержки разделения. Таблицы без разделения могут сохранять одну копию каждой таблицы в каждом разделе для повышения успешности JOIN.
Ограничение WHERE. Если в условии WHERE есть столбец раздела, значение не может содержать функции преобразования или арифметические выражения. Оно должно быть исходным значением, иначе результат может быть неточным или может потребоваться полное сканирование таблицы, увеличивая нагрузку на базу данных.
Поддерживаются ограниченные типы подзапросов и операций: подзапросы могут использоваться в качестве условий и источников данных.
Ограничения запросов. При выполнении SQL-запросов следует учитывать следующие ограничения: поддерживается только связь внутри VDB; для таблиц с разделением в условиях запроса можно использовать ключ разделения, но не рекомендуется использовать функции преобразования и арифметические выражения, так как это может серьёзно повлиять на эффективность.
Ограничение PREPARE. Серверная подготовка не поддерживается, но клиентская подготовка может использоваться вместо неё.
Ограничение китайских имён столбцов. Использование китайских имён или псевдонимов столбцов ограничено. Необходимо заключать их в кавычки при использовании.
Существует ограниченная поддержка распределённых транзакций. Для транзакций, охватывающих один и тот же раздел, мы используем распределённые транзакции по умолчанию. Если важна производительность, можно рассмотреть возможность ручного выполнения одномашинных транзакций при работе со всеми данными в одном разделе.
Транзакции без разделения требуют ссылки на ключ раздела в первой инструкции для облегчения маршрутизации и выполнения SQL в Cetus. Одномашинные транзакции рекомендуются для повышения производительности.
Рекомендуется избегать использования SELECT в распределённых транзакциях, так как SELECT блокирует данные, что может привести к низкой производительности.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )